【发布时间】:2015-07-11 09:55:53
【问题描述】:
旧的 RLMObject 在下面,primaryKey 是 AttributeId。我想将此键更改为 @"Id" next build。
UserItemObject.m
@implementation UserItemObject {
}
+ ( NSString * )primaryKey; {
return @"AttributeId";
}
@end
UserItemObject.h
@interface UserItemObject : RLMObject
@property(nonatomic, copy) NSString *Id;
@property(nonatomic, copy) NSString *AttributeId;
@end
RLM_ARRAY_TYPE(UserItemObject)
然后我给 AppDelegate 写了一些代码;
[RLMRealm setSchemaVersion:1 forRealmAtPath:[RLMRealm defaultRealmPath] withMigrationBlock:^(RLMMigration *migration, NSUInteger oldSchemaVersion) {
if ( oldSchemaVersion < 1 ) {
[migration enumerateObjects: UserItemObject.className block:^(RLMObject *oldObject, RLMObject *newObject) {
newObject[ @"primaryKeyProperty" ] = @"Id";
}];
}
}];
这段代码给我一个错误;
*** Terminating app due to uncaught exception 'RLMException', reason: 'Invalid property name'
我该如何解决这个问题?非常感谢。
【问题讨论】:
-
你有没有试过给它一个不同于
Id的名字?只是为了试用 - 例如userID。也许Id这个名字有一些内部问题... -
我之前试过但不能解决:/
标签: ios objective-c realm core-data-migration realm-migration