use*_*024 6 nsmanagedobject nsmanagedobjectcontext xcdatamodel swift
我的" ProjName.xcdatamodel"中有一个名为"Questions" 的实体.在这个实体中,我有5个属性("icehockey","排球","足球"......),每个属性都有类型transformable.每行(属性)将填充NSMutableArray.我想要做的是获取此实体中特定属性的值.这是我的代码:
func readQuestionsFromCore(sport:NSString) -> NSMutableArray {
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var request = NSFetchRequest(entityName: "Questions")
request.returnsObjectsAsFaults = false
var results: NSArray = context.executeFetchRequest(request, error: nil)!
var qArr:NSMutableArray!
if results.count > 0 {
var res = results[0] as NSManagedObject
qArr = res.valueForKey("\(sport)") as NSMutableArray
return qArr
} else {
qArr = []
return qArr
}
}
Run Code Online (Sandbox Code Playgroud)
这将不起作用,因为我从数据库(results[0] as NSManagedObject)中取出结果的第一个索引,因此如果该元素与我正在寻找的valueForKey不同,它将崩溃.
如何获得我正在寻找的一个结果行?即"足球",或者至少我可以以某种方式循环结果并比较每个结果行的键,以便当我尝试使用错误的键时它不会崩溃?喜欢这样的东西:
for (res) in results as NSManagedObject {
if(res.key == "soccer") {
qArr = res.valueForKey("soccer") as NSMutableArray
return qArr
}
}
Run Code Online (Sandbox Code Playgroud)
我希望我的解释清楚!
该valueForKey方法返回一个可选值,您可以if let按如下方式使用
if let questionsArr = res.valueForKey("\(sport)") as? NSMutableArray {
return questionsArr
} else {
return []
}
Run Code Online (Sandbox Code Playgroud)
这适用于 Xcode 6.3.2,但看起来您正在使用较旧的版本。如果是的话更新到最新的。
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |