对RealmOptional进行过滤会删除nil值,而CoreData谓词则不会

时间:2016-03-09 15:43:19

标签: ios swift core-data realm

我已将CoreData中的代码移植到Realm,除了最后一期之外,一切都很顺利。

使用RealmOptional时的过滤是删除所有值等于nil的对象。

例如,.filter("price <= 10.0")正在从结果集中删除价格为零的所有对象。当使用NSFetchedResultsController和NSPredicates时,CoreData中没有发生这种情况,所以我想知道这是否是Realm的预期行为?

对象与以下示例中的RealmOptional<Double>一样:

class Product : Object, Mapper
{
    var price = RealmOptional<Double>() {
        // Using ObjectMapper library to map JSON to Realm hence willSet
        willSet {
            self.price = newValue
        }
    }
}

我希望结果会返回价格<1的所有Products 10.0包括那些没有值的那些。

这是预期的行为还是只是一个错误?

1 个答案:

答案 0 :(得分:3)

如果使用数字比较运算符进行过滤是预期的行为,则不包括具有空值的对象。如果您想要包含OR price = nilprice的对象,则可以添加nil。如下所示:

let free_or_cheap_products = realm.objects(Product)
    .filter("product <= 10 || product = nil")