从coredata swift获取特定属性

时间:2017-02-14 19:29:05

标签: ios swift core-data

我在核心数据中有一个实体请求:

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个属性:moneyPerSecondSavemoneySavetapMultiplierSavetapValueSave。 我的问题是,有没有一种方法,在我得到results后,我可以创建四个变量,每个变量都包含属性的每个值。

我已尝试使用valueForKey

moneyConstants.money = results.valueForKey("moneySave")

但是当我尝试这个时它会引发一个错误:`类型'[AnyObject]'的值没有成员'valueForKey'。任何帮助将不胜感激。

2 个答案:

答案 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

中获取灵感