sqlite 如何存储此类数据?

v1uwarro  于 2023-08-06  发布在  SQLite
关注(0)|答案(1)|浏览(175)

我有10个世界的数据(类似于超级马里奥兄弟游戏)。每个世界有23个级别,每个级别都有自己的数据:

  • 敌人数量
  • 硬币数量
  • 检查点数量

我想把它存储在我的Android Room数据库中。我的计划是为所有10个世界创建一个表:
| 1级|......这是什么?|等级23| Level23 |
| --|--|--| ------------ |
| [2、50、5]|......这是什么?|[20、100、2]| [20, 100, 2] |
| ......这是什么?||||
| [200,150,4]||【五百、一千、二】| [500, 1000, 2] |
其中每个数组的格式为\[enemies, coins, checkpoints\]。但是,Room Database似乎不支持int \[\]阵列。什么是最好的方式来存储这个?
我可以将我的数据存储在一个单独的Java类中并从那里访问。但是,我有超过1 k个整数值,不知道这是否会影响性能。

xxe27gdn

xxe27gdn1#

您需要编写一个TypeConverter类来将数组数据转换为存储在数据库中的字符串,并在需要取出该数据时转换回来。下面是我存储位图数据的示例:

@Keep
class DataTypeConverter {

 @TypeConverter
 fun fromBitmap(bitmap: Bitmap): ByteArray {
     val outputStream = ByteArrayOutputStream()
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream)
     return outputStream.toByteArray()
 }

 @TypeConverter
 fun toBitmap(byteArray: ByteArray): Bitmap {
     return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.size)
 }
}

字符串

相关问题