Нулевое значение вызывает крах царства
Я использую Realm 0.92.3, но он потерпел крах, когда у меня есть нулевое значение, несмотря на то, что я установил свойства по умолчанию. Есть ли какое-то решение по этому поводу? Если нет, я мог бы конвертировать с использованием coredata, поскольку это очень важно для меня. Нуль будет случайным по нескольким свойствам
@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;
Код ошибки:
-[NSNull UTF8String]: unrecognized selector sent to instance 0x10712b4c0
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull UTF8String]: unrecognized selector sent to instance 0x10712b4c0'
2 ответа
Realm еще не поддерживает настройку nil
за NSString
свойств, но вы можете отслеживать прогресс в этом, следуя https://github.com/realm/realm-cocoa/issues/628.
Области не поддерживают сложные типы данных, поэтому, если вы попытаетесь присвоить сложное значение, такое как <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];
}