首先,我是一个相对业余的应用程序设计爱好者,去年自学了高级 swift/xcode,所以提前为我的代码道歉!
我开发了一个游戏,它有一个叫做playerList的"玩家"类数组。我目前通过编码器将此玩家列表数组转换为 JSON,然后保存到设备...但是,随着我的数组的增长,此练习开始花费很长时间,因此我正在寻找替代方案。我认为最好的解决方案是重写应用程序以使用CoreDate,SQLite等,但我现在正在寻找一个快速的解决方案。
我本可以使用 userDefaults,但是避开了这个大型数组,而是尝试使用 Realm 来捏造一个解决方案。
我已经尝试了以下内容,但是每当我在加载后查看我的玩家列表时,它都是空的。我在这里是否遗漏了一些明显的东西,或者有没有比使用 Realm 更好的方法?
class PlayerArray: Object {
var iden: Int = 0
var allThePlayers: [Player] = playerList
}
func saveViaRealm() {
// Get the default Realm
let realm = try! Realm()
// Define player list
let realmPlayerList = PlayerArray()
realmPlayerList.allThePlayers = playerList
realmPlayerList.iden = 1
// Write to realm
try! realm.write {
realm.add(realmPlayerList)
}
}
func loadViaRealm() {
// Get the default Realm
let realm = try! Realm()
//Retrieve objects from realm
let realmOutputPlayerList = realm.objects(PlayerArray.self)
// Filter to iden required
let realmFiltered = realmOutputPlayerList.filter{$0.iden == 1}[0]
// Assign to playerList
playerList = realmFiltered.allThePlayers
}
我会再次阅读 Realm 文档,了解列表和声明变量。在您的对象类中,您是否收到任何错误?RealmSwift 应该用@objc动态变量来声明。另外,你不应该需要一个 let = 领域。这是 Realm.io 文档的链接。