Ios NSNumber=0的谓词

Ios NSNumber=0的谓词,ios,core-data,nspredicate,Ios,Core Data,Nspredicate,我有以下代码从核心数据中获取结果以填充tableview private lazy var fetchedResultsController: NSFetchedResultsController = { // Initialize Fetch Request let fetchRequest = NSFetchRequest(entityName: "MileageLog") // Add Sort Descriptors let dateSort = NSS

我有以下代码从核心数据中获取结果以填充tableview

private lazy var fetchedResultsController: NSFetchedResultsController = {
    // Initialize Fetch Request
    let fetchRequest = NSFetchRequest(entityName: "MileageLog")

    // Add Sort Descriptors
    let dateSort = NSSortDescriptor(key: "logDate", ascending: true)
    let mileSort = NSSortDescriptor(key: "mileage", ascending: true)
    fetchRequest.sortDescriptors = [dateSort, mileSort]

    //// Create a new predicate that filters out any object that
    //// have not been exported.
    // let predicate = NSPredicate(format: "wasExported == %@", 0)

    //// Set the predicate on the fetch request
    // fetchRequest.predicate = predicate

    let delegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let managedObjectContext = delegate.managedObjectContext

    // Initialize Fetched Results Controller
    let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)

    fetchedResultsController.delegate = self

    return fetchedResultsController

}()

如果没有谓词,tableview将填充正确排序的所有记录。取消对这两行的注释以使谓词生效不会返回任何结果。我的数据集有4条WASExport==1的记录和3条WASExport==0的记录。。。WASExport是一个布尔值,但在核心数据中它存储为NSNumber。。。。。我做错了什么?

您在谓词中使用了错误的格式说明符。你想要:

let predicate = NSPredicate(format: "wasExported == %d", 0)

%@
用于对象指针。使用
%@
0
被解释为
nil
指针。

您在谓词中使用了错误的格式说明符。你想要:

let predicate = NSPredicate(format: "wasExported == %d", 0)

%@
用于对象指针。使用
%@
0
被解释为
nil
指针。

在这种特殊情况下,它不会有什么区别,但实际上应该是
%ld
,compare。在这种特殊情况下,它不会有区别,但实际上应该是
%ld
,compare。