Swift从实体获取特定的NSManagedObject(核心数据)

Swift从实体获取特定的NSManagedObject(核心数据),第1张

概述我的“ProjName.xcdatamodel”中有一个名为“Questions”的实体.在这个实体中,我有5个属性(“icehockey”,“排球”,“足球”……),每个属性都具有可变形的类型.每行(属性)将填充NSMutableArray. 我想要做的是获取此实体中特定属性的值.这是我的代码: func readQuestionsFromCore(sport:NSString) -> NSMu 我的“Projname.xcdatamodel”中有一个名为“Questions”的实体.在这个实体中,我有5个属性(“icehockey”,“排球”,“足球”……),每个属性都具有可变形的类型.每行(属性)将填充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    }}

这将是不可行的,因为我从数据库中取出结果的第一个索引(结果[0]为NSManagedobject),因此如果该元素与我正在寻找的valueForKey不同,它将崩溃.

如何获得我正在寻找的一个结果行?即“足球”,或者至少我可以以某种方式循环结果并比较每个结果行的键,这样当我尝试使用错误的键时它不会崩溃?喜欢这样的东西:

for (res) in results as NSManagedobject {   if(res.key == "soccer") {      qArr = res.valueForKey("soccer") as NSMutableArray      return qArr   }}

我希望我的解释清楚!

解决方法 valueForKey方法返回一个可选项,你可以使用if如下

if let questionsArr = res.valueForKey("\(sport)") as? NSMutableArray {    return questionsArr} else {    return []}

这适用于Xcode 6.3.2,但看起来你使用的是旧的.如果是这样更新到最新版本.

总结

以上是内存溢出为你收集整理的Swift从实体获取特定的NSManagedObject(核心数据)全部内容,希望文章能够帮你解决Swift从实体获取特定的NSManagedObject(核心数据)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1017815.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存