我已经定义了一个我想在FetchRequestController里面的Predicate中使用的变量。
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传递的变量来预测所有结果。任何帮助,将不胜感激。
答案 0 :(得分:0)
缺少运算符和占位符(如上一行所示)
let predicateSubuser = NSPredicate(format: "dltSubuserID == %@", self.subuserID)
注意:
dltPresent
谓词行可以缩减为
let predicate = NSPredicate(format: "dltPresent == TRUE")