gpt4 book ai didi

ios - 无法从核心数据属性中获取整数

转载 作者:行者123 更新时间:2023-11-28 11:18:45 26 4
gpt4 key购买 nike

我有一个核心数据模型,我在其中添加了名为 CurrentLevel 的实体和一个名为 currentLevel 且类型为 int16 的属性。我正在尝试像这样将一个简单的整数保存到其中:

    func saveCurrentLevel(cLevel: Int16){

let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate

let managedContext = appDelegate.managedObjectContext!

let entity = NSEntityDescription.entityForName("CurrentLevel",
inManagedObjectContext:
managedContext)

let curLevel = NSManagedObject(entity: entity!,
insertIntoManagedObjectContext:managedContext)

curLevel.setValue(NSNumber(short: cLevel), forKey: "currentLevel")

var error: NSError?
if !managedContext.save(&error) {
println("Could not save \(error), \(error?.userInfo)")
}

}

这是我的获取方法

func fetchTheStuff() {

//1
let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate

let managedContext = appDelegate.managedObjectContext!

//2
let fetchRequest = NSFetchRequest(entityName:"CurrentLevel")

//3
var error: NSError?

var fetchedResults =
managedContext.executeFetchRequest(fetchRequest,
error: &error) as? [NSManagedObject]



if let results = fetchedResults {
println(results)
} else {
println("Could not fetch \(error), \(error!.userInfo)")
}

}

我需要获取的结果只是一个简单的整数,但我找不到使用核心数据的方法。任何人都知道广告/或我做错了什么?

最佳答案

executeFetchRequest() 返回一个托管对象数组。您必须获取单个元素(例如第一个),然后检索“currentLevel”属性的值(它是一个 NSNumber)最后提取 Int16:

if let results = fetchedResults {
if count(results) > 0 {
let curLevel = results[0] // NSManagedObject
if let num = curLevel.valueForKey("currentLevel") as? NSNumber {
let cLevel = num.shortValue // Int16
println(cLevel)
} else {
println("level not set")
}
} else {
println("no objects found")
}
} else {
println("Could not fetch \(error), \(error!.userInfo)")
}

除了使用 setValue/valueForKey() 进行键值编码之外,您还可以让 Xcode 创建 NSManagedObject 子类。如果你激活然后“使用原始数据类型的标量属性”选项你可以访问它

@NSManaged var currentValue: Int16

直接拥有。

关于ios - 无法从核心数据属性中获取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30130441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com