2017-07-07 68 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)