Realm Swift:无法从领域中获取对象

时间:2017-07-07 07:49:37

标签: ios swift realm

我从api获取了一个带有不同api链接版本的JSON文件,以便我知道如果它已经过时则再次下载哪些信息。

我有一个Version类,如下所示:

class Version : Object {

dynamic var myKey = NSUUID().uuidString
dynamic var banks_v = 0
dynamic var atms_v = 0

override static func primaryKey() -> String? {
    return "myKey"
}

我的想法是从领域中获取旧版本并从api下载新版本,如果版本不匹配,我应该下载我需要的JSON文件并更新我的领域。我是这样做的:

let newVersion = Version()
for item in json {
     newVersion.banks_v = item.1["banks_v"].intValue
     newVersion.atms_v = item.1["atms_v"].intValue
}

// ---- NEED HELP HERE START                 
let oldVersion = self.realm.object(ofType: Version.self, forPrimaryKey: newVersion.myKey)
// NEED HELP HERE END ----

var rewriteVersion = false
if newVersion.banks_v != oldVersion?.banks_v {
     print(newVersion.banks_v) // prints 3 (correct)
     print(oldVersion?.banks_v) // prints nil (???)
     self.getBanks()
     rewriteVersion = true
}
if newVersion.atms_v != oldVersion?.atms_v {
     self.getAtms()
     rewriteVersion = true
}

if rewriteVersion {
     try! self.realm.write {
          self.realm.add(newVersion, update: true)
     }
}

问题在于我不知道如何从领域中正确获取对象。我认为这部分是错误的:

forPrimaryKey: newVersion.myKey

我也试过把" myKey"那里但它仍然是零。关于这个的任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我修好了!

在我的模型课中,我更换了我的id:

dynamic var id = 0

在这里:

let oldVersion = self.realm.object(ofType: Version.self, forPrimaryKey: 0)