Повышено с 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
Другие вопросы по тегам