2015-09-07 114 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

相关问题