2017-07-07 64 views
2

Im从api获取JSON文件与不同api链接的版本,以便我知道哪些信息要再次下载,如果它过时了。Realm Swift:无法从领域获取对象

我有一个版本的类,看起来像这样:

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

我修好了!

在我的模型类我取代我的ID是这样的:

dynamic var id = 0 

这里:

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