我在核心数据中有一个实体请求:
override func viewWillAppear(animated: Bool) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Constants")
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
在实体Constants
中有4个属性:moneyPerSecondSave
,moneySave
,tapMultiplierSave
和tapValueSave
。
我的问题是,有没有一种方法,在我得到results
后,我可以创建四个变量,每个变量都包含属性的每个值。
我已尝试使用valueForKey
:
moneyConstants.money = results.valueForKey("moneySave")
但是当我尝试这个时它会引发一个错误:`类型'[AnyObject]'的值没有成员'valueForKey'。任何帮助将不胜感激。
答案 0 :(得分:1)
'结果'是一个数组,其中包含任何'类型。您可以将其转换为具有所需类型的数组,并获取其余数据,如下所示:
if let constants = results as? [Constants] {
let moneyPerSecond = constants[0].moneyPerSecondSave
print("moneyPerSecond: \(moneyPerSecond)")
}
当然,您也可以使用valueForKey:
if let match = results[0] as? Constants {
let money = match.value(forKey: "moneySave") as! Float
print("money: \(money)")
}
答案 1 :(得分:0)
您可以使用propertiesToFetch
& resultType
的{{1}}属性仅检索NSFetchRequest
的特定属性值。
您可以从https://stackoverflow.com/a/6267875/3339346