大佬教程收集整理的这篇文章主要介绍了ios – 具有多个参数和“AND行为”的NSPredicate,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
func fetchWithPreDicate(entityName: String,argumentArray: [AnyObject]) -> [NsmanagedObject] { let fetchrequest = NSFetchrequest(entityName: entityName) fetchrequest.preDicate = NSPreDicate(format: "%K == %@",argumentArray: argumentArray) do { return try self.managedContext.executeFetchrequest(fetchrequest) as! [NsmanagedObject] } catch { let fetchError = error as NSError print(fetchError) return [NsmanagedObject]() } }
当我传递一个包含多个aguments(多个属性名称和值)的数组时,似乎会创建一个这样的查询:
attributename1 = value1 OR attributename2 = value2 OR attributename3 = value3 OR...
我想为AND更改这些OR.
编辑:
问题是它只有replacing the first two items,“%K ==%@”.
所以,我必须创建一个NSCompoundPredicate to create a predicate dynamically.
let preDicate = NSCompoundPreDicate(andPreDicateWithSubpreDicates: subPreDicates)
其中subPreDicates是[NSPreDicate]数组,每个subpreDicate
是从循环中提供的参数创建的
NSPreDicate(format: "%K == %@",key,value)
像这样(未经测试):
func fetchWithPreDicate(entityName: String,argumentArray: [NSObject]) -> [NsmanagedObject] { var subPreDicates : [NSPreDicate] = [] for i in 0.Stride(to: argumentArray.count,by: 2) { let key = argumentArraY[i] let value = argumentArraY[i+1] let subPreDicate = NSPreDicate(format: "%K == %@",value) subPreDicates.append(subPreDicatE) } let fetchrequest = NSFetchrequest(entityName: entityName) fetchrequest.preDicate = NSCompoundPreDicate(andPreDicateWithSubpreDicates: subPreDicates) // ... }
以上是大佬教程为你收集整理的ios – 具有多个参数和“AND行为”的NSPredicate全部内容,希望文章能够帮你解决ios – 具有多个参数和“AND行为”的NSPredicate所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。