CoreData和null值

时间:2014-05-22 15:09:43

标签: objective-c core-data null

是否可以在设置为接受字符串的实体属性中放置空值?

我有一个设置为接收字符串的笔记属性,但是当笔记字段为空时,我点击的网络服务会返回null值。

2 个答案:

答案 0 :(得分:1)

由于NSDictionarys和NSArrays不能包含nil值,因此当服务器响应null存储为[NSNull null]单例时。不幸的是,如果你对它进行if检查,那么它就会变成true

核心数据本身可以存储对象的nil值,但取决于您是否需要nil或空字符串取决于您。

我们在工作中解决这个问题的方式我们在NSObject类别中有一个辅助函数(在.pch中导入)

id ObjectOrNull(id object) {
    if (!object || object == [NSNull null]) return nil;
    return object;
}

以类似

的方式处理对该功能的响应
coreDataInstance.data = (ObjectOrNull(response[@"key"]) ?: @"";

或只是将其指定为

coreDataInstance.data = (ObjectOrNull(réponse[@"key"]);

答案 1 :(得分:0)

我的一位同事找到了答案。解决方案是设置条件如下:

if (NSLocalizedString([actionItem objectForKey:@"Notes"], nil) == [NSNull null]) {
    newAction.notes = @"";
}