NSCompoundPredicate 的 NSPredicate 数组
Posted
技术标签:
【中文标题】NSCompoundPredicate 的 NSPredicate 数组【英文标题】:NSPredicate array for NSCompoundPredicate 【发布时间】:2016-08-09 18:59:58 【问题描述】:请帮助我,我想在 Swift 2.2 NSPredicate 数组中为 NSCompoundPredicate 创建一个 coredata 获取函数
public func loadData(entityName: String, filters: [String: String] = [:], dataFault: Bool = true) -> [NSManagedObject]
var listItems: [NSManagedObject]?
let delegate = UIApplication.sharedApplication().delegate as? AppDelegate
if let context = delegate?.managedObjectContext
let fetchRequist = NSFetchRequest(entityName: entityName)
if (filters.count > 0)
var predicte: [NSPredicate]
for (key, value) in filters
let p1:NSPredicate = NSPredicate(format: "%K == %@", key, value as NSObject)
predicte.appendContentsOf(p1)
fetchRequist.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: predicte)
fetchRequist.returnsObjectsAsFaults = dataFault
do
let results = try context.executeFetchRequest(fetchRequist)
listItems = results as? [NSManagedObject]
catch let err
print(err)
else
print("context Error")
return listItems!
predicte.appendContentsOf(p1) 显示错误
【问题讨论】:
提供错误的详细信息以及您预计会发生什么 【参考方案1】:在您的代码中,p1
不是 CollectionType,因此您需要使用 append
,而不是 appendContentsOf
:
predicte.append(p1)
另外,您需要适当地初始化您的predicte
:
var predicte: [NSPredicate] = []
【讨论】:
谢谢,它的工作。请告诉我这是不是编码的好方法 @AyonSaha,对不起,但我不确定我使用 Core Data 的方式是否是一种好方法。我从网络资源中学到了很多东西,包括 Stack Overflow 的经典线程。密切关注他们。 我不是在谈论你的解决方案,我是在谈论我的总体功能和我的编码方式,或者我是否正确 @AyonSaha,我的意思是,如果我知道什么是好的,我可以改进我的应用程序并说我的好。 好的,再次感谢您的解决方案以上是关于NSCompoundPredicate 的 NSPredicate 数组的主要内容,如果未能解决你的问题,请参考以下文章
在 swift 3 中创建复杂的 NSCompoundPredicate
NSCompoundPredicate 混合 AND 和 OR
Xcode 6.1 中的 NSCompoundPredicate 错误