【问题标题】:Predicate for NSNumber = 0NSNumber 的谓词 = 0
【发布时间】:2016-05-16 20:12:16
【问题描述】:

我有以下代码从核心数据中获取结果以填充表格视图。

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

}()

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

【问题讨论】:

    标签: ios core-data nspredicate


    【解决方案1】:

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    相关资源
    最近更新 更多