Повышено с 0.95.3 до 0.96.3 Какао Царство, получение "Property 'id' стало необязательным".
Обновление от Царства 0.95.3 до Царства 0.96.3
Ошибки приложения внутри RLMObjectStore.mm:106
Выдает ошибку, утверждая, что свойства были сделаны необязательными
(lldb) po objectSchema
DTFLogMessage {
id {
type = string;
objectClassName = (null);
indexed = YES;
isPrimary = YES;
optional = YES;
}
creationDate {
type = date;
objectClassName = (null);
indexed = NO;
isPrimary = NO;
optional = YES;
}
message {
type = string;
objectClassName = (null);
indexed = NO;
isPrimary = NO;
optional = YES;
}
fileinfo {
type = string;
objectClassName = (null);
indexed = NO;
isPrimary = NO;
optional = YES;
}
type {
type = int;
objectClassName = (null);
indexed = NO;
isPrimary = NO;
optional = NO;
}
}
Как это можно сделать необязательным снова? Я не вижу ничего в документации о том, как это сделать. Модель настроена как показано ниже:
#import <Realm/RLMObject.h>
@interface DTFLogMessage : RLMObject
@property NSString *id;
@property NSDate *creationDate;
@property NSString *message;
@property NSString *fileinfo;
@property NSInteger type;
@end
RLM_ARRAY_TYPE(DTFLogMessage)
.m файл выглядит следующим образом.
#import "DTFLogMessage.h"
@implementation DTFLogMessage
+ (NSString*)primaryKey
{
return @"id";
}
@end
1 ответ
Документы Realm Objective-C по дополнительным свойствам объясняют, как это сделать:
По умолчанию,
NSString *
,NSData *
, а такжеNSDate *
свойства позволяют вам установить их на ноль. Если вы хотите, чтобы значение присутствовало, вы можете переопределить+requiredProperties
метод в вашем подклассе RLMObject. Например, со следующим определением модели, попытка установить имя человека равным nil приведет к исключению, но установка дня рождения на nil разрешена:
@interface Person : RLMObject
@property NSString *name;
@property NSDate *birthday;
@end
@implementation Person
+ (NSArray *)requiredProperties {
return @[@"name"];
}
@end