在项目崩溃的领域添加属性

时间:2016-06-21 03:18:21

标签: objective-c crash realm

以下是我的领域文件:

@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时,再次运行项目,然后单击使用领域的按钮,项目没有崩溃,所以我不知道如何解决这个问题?上帝,它再次崩溃!!!

1 个答案:

答案 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文件,这就是它之后工作的原因。