我正在使用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;
答案 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跟踪该进度。