2017-02-14 70 views
1

特定属性我有在核心数据的实体的请求:获取从coredata迅速

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”。任何帮助,将不胜感激。

+0

提示:'结果'是一个* array * ... –

+0

@MartinR所以如果我想用'results [0]做一个变量,那么它可能会给我第一个属性的值?对不起,如果这是一个愚蠢的问题,我是新来的迅速。 –

+0

这与Swift无关,Core Data更多(因此您可能需要阅读Core Data Programming Guide)。 - 'results'是一个托管对象数组。如果只创建一个对象,那么该数组只包含一个元素。 –

回答

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)") 
     }