的鍵 - 值編碼方法
與類型
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