的键 - 值编码方法
与类型
AnyObject
的值
func valueForKey(key: String) -> AnyObject?
func setValue(value: AnyObject?, forKey key: String)
工作,为的整数属性这些 是NSNumber
实例。
有Int
和NSNumber
,但Int32
和NSNumber
之间不 之间的自动桥接(这无关与 事实,你定义的核心数据 模型检查属性为“整型32”) 。
您有几种选择:
只需使用Int
类型的变量:
var numChanges = theme.valueForKey("numberThemeChanged") as Int
numChanges++
theme.setValue(numChanges, forKey: "numberThemeChanged")
使用Int32
,并且将来自和NSNumber
明确:
var numberOfChanges = (theme.valueForKey("numberThemeChanged") as NSNumber).intValue // Int32
numberOfChanges++
theme.setValue(NSNumber(int: numberOfChanges), forKey: "numberThemeChanged")
使用Xcode - >编辑器 - >创建NSManagedObject子类...并检查“使用基元数据类型的标量属性”选项。 这会给你一个管理对象子与物业
@NSManaged var numberThemeChanged: Int32
,您可以不需要键 - 值编码访问属性:
var numberOfChanges = theme.numberThemeChanged
numberOfChanges++
theme.numberThemeChanged = numberOfChanges
这是一个完整的“创建 - 或 - 更新“示例:
var theme : Entity!
let request = NSFetchRequest(entityName: "Entity")
var error : NSError?
if let result = context.executeFetchRequest(request, error: &error) as [Entity]? {
if result.count > 0 {
// (At least) one object found, set `theme` to the first one:
theme = result.first!
} else {
// No object found, create a new one:
theme = NSEntityDescription.insertNewObjectForEntityForName("Entity", inManagedObjectContext: context) as Entity
// Set an initial value:
theme.setValue(0, forKey: "numberThemeChanged")
}
} else {
println("Fetch failed: \(error?.localizedDescription)")
}
// Get value and update value:
var numChanges = theme.valueForKey("numberThemeChanged") as Int
numChanges++
theme.setValue(numChanges, forKey: "numberThemeChanged")
// Save context:
if !context.save(&error) {
println("Save failed: \(error?.localizedDescription)")
}
println(numChanges)
设置值后。保存NSManagedObjectContext对象。 – Jassi 2015-04-04 12:19:33
我保存了NSMangedObjectContext对象。 – horst 2015-04-04 12:39:59
无论值是否更新,您都可以通过从核心数据中提取对象来检查该对象。 – Jassi 2015-04-04 12:41:18