核心数据查询值“不是零”不返回值等于 0 的对象

Posted

技术标签:

【中文标题】核心数据查询值“不是零”不返回值等于 0 的对象【英文标题】:Core data query value "is not nil" is not returning object with value equal 0 【发布时间】:2016-03-04 13:25:52 【问题描述】:

我尝试返回属性rawValue 不为零的对象(测量)。我的谓词是:

myPredicate = NSPredicate(format: "rawValue != %@", "nil")

还有我的要求

let fetchRequest = NSFetchRequest(entityName:"Measure")

    fetchRequest.predicate = predicate

    do 
        let fetchResults = try managedObjectContext?.executeFetchRequest(fetchRequest) as? [Measure]
        if fetchResults!.count > 0
            measuresFetched = fetchResults!
        
     catch let error as NSError 
        print("Fetch failed: \(error.localizedDescription)")
    

问题是我的查询没有返回 rawValue = 0 的对象。对我来说 0 不是 nil。

我的对象如下所示

class Measure: NSManagedObject

    @NSManaged var rawValue: NSNumber?
    @NSManaged var date: NSDate

    class func createInManagedObjectContext(moc: NSManagedObjectContext,rawValue: Double?, date: NSDate) -> Measure 
        let newItem = NSEntityDescription.insertNewObjectForEntityForName("Measure", inManagedObjectContext: moc) as! Measure
        newItem.rawValue = rawValue
        newItem.date = date
        return newItem
    


如何返回所有 rawValue 不为 nil 的对象?

【问题讨论】:

【参考方案1】:

试试这样的谓词

myPredicate = NSPredicate(format: "rawValue != nil")

【讨论】:

我没有尝试过,因为我虽然myPredicate = NSPredicate(format: "rawValue != nil")myPredicate = NSPredicate(format: "rawValue != %@", "nil")之间完全一样......我需要了解它们之间有什么区别 根据您的实施myPredicate = NSPredicate(format: "rawValue != 'nil' ") 所以它和我提出的谓词不同

以上是关于核心数据查询值“不是零”不返回值等于 0 的对象的主要内容,如果未能解决你的问题,请参考以下文章

核心数据打开文件脏,缺失值不一致,fetch返回空数组

Linux Shell编程之测试条件

如果值等于,则从对象返回键和值

在oracle数据库中有时候like加上not like 的数据却不等于总行数为啥

如果值等于,则从对象返回键和值

SQL 统计个数;条件:指定行间,指定字段值等于A的记录数。