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!

クラッシュしました。次に、修復のためにスタックモブの「スキーマ構成」で「グループ」スキームを削除する必要があります。そのため、事前設定された関係を持つユーザー オブジェクトを作成できません。

4

2 に答える 2

0

私は解決策を見つけました: 私の AppDelegate 行で "SM_CACHE_ENABLED = YES" をクラッシュさせます...

于 2013-07-24T10:55:46.697 に答える