iOS Stackmob SDK(2.0.0)(关系)错误

时间:2013-07-11 13:03:39

标签: relationship stackmob

我发现了关系中的一个关键错误。在保存块“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“Schema Configuration”中的“Group”方案进行修复。 因此,我无法创建具有预设关系的用户对象。

2 个答案:

答案 0 :(得分:1)

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

将您的用户类更改为继承自SMUserManagedObject。请参阅Stackmob Core Data Guide中的SMUserManagedObject部分。

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

- (NSString *)primaryKeyField
{
    return @"username";
}

答案 1 :(得分:0)

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