空值导致Realm崩溃

时间:2015-05-19 10:47:07

标签: ios null realm nsnull

我正在使用Realm 0.92.3,但是当我设置了默认属性时,我有空值时崩溃了。这有什么解决方案吗?如果不是,我可能会使用coredata进行转换,因为这对我来说非常重要。 null将在几个属性上随机

IEnumerable<MenuItem>

数据回复:

@interface WatchlistNews : RLMObject
@property NSString              *nid;
@property NSString              *tid;
@property NSString              *country;

@end


 @implementation WatchlistNews
 + (NSString *)primaryKey {
     return @"nid";
 }

 + (NSDictionary *)defaultPropertyValues {
     return @{@"nid" : @"", @"tid": @"", @"country": @""};
 }
 @end

错误代码:

nid = 509319;
tid = <null>;
country = my;

2 个答案:

答案 0 :(得分:0)

Realm不支持复杂的数据类型,因此如果您尝试分配一个复杂的值,例如<null>,它就会崩溃。

您应该检查从服务器获取的<null>值的响应。如果它存在于响应中,则用空字符串替换它。尝试按照您所获得的响应执行以下代码,以消除<null>值的出现。

-(NSMutableDictionary *) removeNullFromDictionary:(NSDictionary *) originalDictionary{

NSArray *allKeysArray = [originalDictionary allKeys];
const NSMutableDictionary *replaced = [originalDictionary mutableCopy];
const id nul = [NSNull null];
const NSString *blank = @"";

for(NSString *key in allKeysArray) {

    const id object = [originalDictionary objectForKey:key];

    if(object == nul) {

        [replaced setObject:blank forKey:key];

    }
}
return [replaced copy];

}

答案 1 :(得分:0)

Realm尚不支持为nil媒体资源设置NSString,但您可以按照https://github.com/realm/realm-cocoa/issues/628跟踪该进度。