以下是我的领域文件:
@property NSString *operator;
@property NSString *publishTime;
现在我添加了一个属性,领域文件正在变为:
@property NSString *operator;
@property NSString *publishTime;
@property NSString *title;
然后我在Xcode中运行项目,单击使用领域的按钮,项目崩溃。错误是
File "/Users/ltl/Library/Application Support/Realm/rlm_lldb.py", line 226, in RLMResults_SummaryProvider if not is_results_evaluated(obj): File "/Users/ltl/Library/Application Support/Realm/rlm_lldb.py", line 213, in is_results_evaluated mode_query_value = next(m for m in mode_type.enum_members if m.name == 'Query').GetValueAsUnsigned() StopIteration
我该如何解决?
但是当我从iPhone删除APP时,再次运行项目,然后单击使用领域的按钮,项目没有崩溃,所以我不知道如何解决这个问题?上帝,它再次崩溃!!!
答案 0 :(得分:1)
当您修改Realm对象的架构(即添加新属性)时,使用旧架构的任何现有Realm文件都需要a migration才能使用新属性进行更新。在您的情况下,由于您只是添加新字段而不移动任何数据,因此您无需在迁移块中指定,但仍需要:
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.schemaVersion = 1;
config.migrationBlock = ^(RLMMigration *migration, uint64_t oldSchemaVersion) { };
[RLMRealmConfiguration setDefaultConfiguration:config];
当您从设备中删除应用程序时,您也会删除其中的Realm文件。当您重建它时,您正在使用新架构部署新的Realm文件,这就是它之后工作的原因。