我已经定义了一个变量,我想在FetchRequestController中的谓词中使用它。
var subuserID : String = "0"
lazy var fecthResultsControllerDocList : NSFetchedResultsController = { () -> NSFetchedResultsController<DocumentTypeList> in
let fecthRequest : NSFetchRequest<DocumentTypeList> = DocumentTypeList.fetchRequest()
let predicate = NSPredicate(format: "dltPresent == %@", NSNumber(value: true))
let loggedUser = Auth.auth().currentUser
let userId = loggedUser?.uid
let predicateUser = NSPredicate(format: "dltUserID == %@", userId!)
let predicateSubuser = NSPredicate.init(format: "dltSubuserID", self.subuserID)
let compoundPredicate = NSCompoundPredicate.init(type: .and, subpredicates: [predicateUser, predicate, predicateSubuser])
fecthRequest.predicate = compoundPredicate
let sortDescript = NSSortDescriptor(key: "dltID", ascending: true)
fecthRequest.sortDescriptors = [sortDescript]
let controller = NSFetchedResultsController(fetchRequest: fecthRequest, managedObjectContext: PersistenceService.context, sectionNameKeyPath: nil, cacheName: nil)
controller.delegate = self
return controller
}()
当我运行此代码时,它崩溃的原因如下:
2018-03-22 13:11:38.479 AppName[5640:344901] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "dltSubuserID"'
基本上,我想使用以前的 ViewController 传递的变量来预测所有结果。任何帮助将不胜感激。
缺少运算符和占位符(如上一行所示(
let predicateSubuser = NSPredicate(format: "dltSubuserID == %@", self.subuserID)
注意:
谓词行dltPresent
可以减少到
let predicate = NSPredicate(format: "dltPresent == TRUE")