1

我发现了一个与关系有关的严重错误。保存在“saveOnSuccess”块中后,我尝试为我的 SMUserManagedObject 设置关系,并出现日志崩溃:

*由于未捕获的异常“SMExceptionIncompatibleObject”而终止应用程序,原因:“未找到映射到 StackMob 上的主键的实体用户的属性。属性名称应与以下格式之一匹配:lowercasedEntityNameId 或 lowercasedEntityName_id。如果 User 的托管对象子类继承自 SMUserManagedObject,这意味着它旨在定义用户对象,则您可以返回上述格式或任何带有可选下划线的小写字符串与 StackMob 上的主键字段匹配。它看起来像:

NSManagedObjectContext *context = [[[SMClient defaultClient] coreDataStore] contextForCurrentThread];
User *user = [[User alloc] initNewUserInContext:context]; 
[user setUsername:@"username1"];
[context saveOnSuccess:^{
user.group = group; //an already created object <--- Have a crash
} onFailure:^{
}];

在此之后,我的“组”架构被破坏了。任何尝试都是失败的。如果我尝试在任何其他地方设置,例如:

user.group = group; //Before using saveOnSuccess trick this line work perfectly!

我有一个崩溃。然后我需要在stackmob“架构配置”中删除“组”方案进行修复。因此,我无法创建具有预设关系的用户对象。

4

2 回答 2

1

你可以做两件事之一...

将您的 User 类更改为继承自SMUserManagedObject. 请参阅Stackmob 核心数据指南中的 SMUserManagedObject 部分。

或者在 User 类中定义一个返回主键字段名称的选择器:

- (NSString *)primaryKeyField
{
    return @"username";
}
于 2013-07-12T16:11:59.283 回答
0

我找到了解决方案:在我的 AppDelegate 行“SM_CACHE_ENABLED = YES”中使崩溃...

于 2013-07-24T10:55:46.697 回答