Swift从实体获取特定的NSManagedObject(核心数据)
发布时间:2020-12-14 05:00:33 所属栏目:百科 来源:网络整理
导读:我的“ProjName.xcdatamodel”中有一个名为“Questions”的实体.在这个实体中,我有5个属性(“icehockey”,“排球”,“足球”……),每个属性都具有可变形的类型.每行(属性)将填充NSMutableArray. 我想要做的是获取此实体中特定属性的值.这是我的代码: func r
我的“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,但看起来你使用的是旧的.如果是这样更新到最新版本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读