首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Realm Swift:无法从realm获取对象

Realm Swift:无法从realm获取对象
EN

Stack Overflow用户
提问于 2017-07-07 15:49:37
回答 1查看 368关注 0票数 2

我正在从api获取一个带有不同api链接版本的JSON文件,这样我就可以知道在哪些信息过期时再次下载它。

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

代码语言:javascript
复制
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"
}

我的想法是从realm中获取一个旧版本,然后从api下载新版本,如果版本不匹配,我应该下载所需的JSON文件并更新我的realm。我是这样做的:

代码语言:javascript
复制
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)
     }
}

问题是我不知道如何正确地从realm中获取对象。我认为这一部分是错误的:

代码语言:javascript
复制
forPrimaryKey: newVersion.myKey

我也试着把"myKey“放在那里,但是仍然是空的。对此有什么想法吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-07 16:45:49

我修好了!

在我的模型类中,我这样替换了我的id:

代码语言:javascript
复制
dynamic var id = 0

还有这里:

代码语言:javascript
复制
let oldVersion = self.realm.object(ofType: Version.self, forPrimaryKey: 0)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44965381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档