将变量传递给 FetchRequestController语言 - Swift



我已经定义了一个变量,我想在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")

最新更新