2015-09-07 67 views
1

我已經在SO和Google上檢查了答案,並且陷入了困境。無法用參數列表類型(Int64,字符串)調用setValue

func saveAvailableWord(word: GameWord) { 
     let gw = NSEntityDescription.insertNewObjectForEntityForName("GameWord", inManagedObjectContext: persistence.managedObjectContext!) as! NSManagedObject 
     let rId = word.rowID 
     gw.setValue(rId, forKey: "rowID") //*** Error line 
} 

上面的代碼是用於核心數據,只是試圖創建一個對象。但我得到

「不能援引‘的setValue’類型的參數列表‘(Int64的,forKey:字符串)’。

上標線ROWID被定義爲@NSManaged var rowID: Int64,因爲它是未來從一個SQLite ROWID列。

如果我用一個簡單的數字錯誤消失。我錯過了什麼?我在做什麼錯替換掉變量?

感謝你的時間和幫助。

回答

1
func setValue(value: AnyObject?, forKey key: String) 

預計(可選的)對象作爲第一個參數。不像Int,固定 大小整數類型Int64Int32,...是自動橋接 NSNumber對象,所以你必須顯式調用

gw.setValue(NSNumber(longLong: rID), forKey: "rowID") 

但如果rowId在管理被定義爲Int64對象子類, 那麼你可以簡單地用

gw.rowID = rID 

沒有分配屬性值需要鍵值編碼方法。

+0

這正是我所需要的。我曾嘗試其他演員,但不是NSNumber。簡單地分配值是最好的方式。謝謝! – d3h

相關問題