2017-02-14 67 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)") 
     }