将变量传递给FetchRequestController - Swift

时间:2018-03-22 08:05:29

标签: swift

我已经定义了一个我想在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传递的变量来预测所有结果。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

缺少运算符和占位符(如上一行所示)

let predicateSubuser = NSPredicate(format: "dltSubuserID == %@", self.subuserID)

注意:

dltPresent谓词行可以缩减为

let predicate = NSPredicate(format: "dltPresent == TRUE")