无法用types参数列表(Int64,String)调用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 } 

上面的代码是针对核心数据的,只是试图创build一个对象。 但是我明白了

“不能用types为'(Int64,forKey:String)'的参数列表调用'setValue''

在标记的行上。 rowID被定义为@NSManaged var rowID: Int64因为它来自SQLite的ROWID列。

如果我用一个简单的数字replacerIdvariables,错误就会消失。 我错过了什么? 我究竟做错了什么?

感谢您的时间和帮助。

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

期望(可选) 对象作为第一个参数。 与Int不同,固定大小的整数typesInt64Int32 ,… 不会自动桥接到NSNumber对象,所以您必须显式调用

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

但是,如果将rowId定义为托pipe对象子类中的Int64 ,则可以简单地使用属性值进行赋值

 gw.rowID = rID 

而不需要键值编码方法。