首页 > 解决方案 > 在现有项目中保存大型类数组的最佳和最快方法是什么?领域不工作

问题描述

首先,我是一个应用程序设计的相对业余爱好者,去年自学了高级 swift/xcode,所以提前为我的代码道歉!

我开发了一个游戏,它有一个名为 playerList 的“玩家”类数组。我目前通过编码器将此 playerList 数组转换为 JSON,然后保存到设备……但是随着我的数组的增长,这个练习开始需要很长时间,所以我正在寻找一个替代方案。我认为最好的解决方案是重写应用程序以使用 CoreDate、SQLite 等,但我现在正在寻找一个快速的解决方案。

我本可以使用 userDefaults,但是作为大数组避开了这个,而是尝试使用 Realm 来伪造一个解决方案。

我已经尝试过以下操作,但是每当我在加载后查看我的 playerList 时,它都是空的。我是否在这里遗漏了一些明显的东西,或者是否有比使用 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

}

标签: arraysswiftobjectsaverealm

解决方案


我将再次阅读有关列表和声明变量的 Realm 文档。在您的对象类中,您是否遇到任何错误?RealmSwift 应该使用 @objc 动态变量声明。此外,您不应该只需要一个 let = realm。这是 Realm.io文档的链接。


推荐阅读