2016-04-23 21 views
3

私は< <グループとの関係を保存しようとすると、私は、コアデータエラーを持っている - >>連絡先CoreData:エラー - エンティティは、キー値コーディング準拠のIDではありません

私はでcoredataから1人の連絡先をフェッチUID によってhashUser、1つのグループとFUNC

// extension CXDMContact 
func addGroup(value: CXDMGroup) { 
    let items = self.mutableSetValueForKey("groups"); 
    items.addObject(value) 
} 
とし、多くの関係 を追加してみてください

私はそれを保存しようとすると、私はexeption

CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. [<CXDMGroup 0x7fb7924aa770> valueForUndefinedKey:]: the entity Group is not key value coding-compliant for the key "id". with userInfo { 
    NSTargetObjectUserInfoKey = "<CXDMGroup: 0x7fb7924aa770> (entity: Group; id: 0xd0000000000c0000 <x-coredata://E66299CB-12A5-4152-8B49-8E9B3B68762F/Group/p3> ; data: {\n contacts =  (\n  \"0xd000000000040002 <x-coredata://E66299CB-12A5-4152-8B49-8E9B3B68762F/Contact/p1>\"\n );\n uid = 5;\n})"; 
    NSUnknownUserInfoKey = id; 
} 

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<CXDMGroup 0x7fb7924aa770> valueForUndefinedKey:]: the entity Group is not key value coding-compliant for the key "id".' 

を取得するが、私はどのIDフィールドを持っていない、と私は一瞬でmanagedObjectContextで見れば - 「私は

(lldb) po managedObjectContext.updatedObjects 
▿ 2 elements 
    - [0] : <CXDMContact: 0x7fb7927f5270> (entity: Contact; id: 0xd000000000040002 <x-coredata://E66299CB-12A5-4152-8B49-8E9B3B68762F/Contact/p1> ; data: { 
    chatStatus = nil; 
    companyId = nil; 
    companyName = OWN; 
    companySubscription = nil; 
    connectedLoads = nil; 
    countryCode2 = nil; 
    departmentName = nil; 
    email = nil; 
    firstname = Ownname; 
    groups =  (
     "0xd0000000000c0000 <x-coredata://E66299CB-12A5-4152-8B49-8E9B3B68762F/Group/p3>" 
    ); 
    jobTitle = nil; 
    lastname = Lastname; 
    messages = "<relationship fault: 0x7fb7924a25b0 'messages'>"; 
    phone1 = nil; 
    phone2 = nil; 
    serialNumber = nil; 
    status = Offline; 
    timeZoneName = nil; 
    userHash = 1002; 
}) 
    - [1] : <CXDMGroup: 0x7fb7924aa770> (entity: Group; id: 0xd0000000000c0000 <x-coredata://E66299CB-12A5-4152-8B49-8E9B3B68762F/Group/p3> ; data: { 
    contacts =  (
     "0xd000000000040002 <x-coredata://E66299CB-12A5-4152-8B49-8E9B3B68762F/Contact/p1>" 
    ); 
    uid = 5; 
}) 

(lldb) po managedObjectContext.insertedObjects 
0 elements 

(lldb) po managedObjectContext.deletedObjects 
0 elements 

を参照してください、私はドンキー "id"はどこにあるのか分かりませんか? 助けてください

答えて

4

この問題は、エラーのヒントと同じように、コンテキストの保存を観察することと関係しています。 NSFetchedResultsControllerなどを使用してそのイベントを監視している場合は、という問題があります。おそらく、あるタイプのどこかでUITableViewCell

+0

はいNSFetchedResultsController –

+1

親子関係を持つエンティティのツリーがあります。私はこの答えが私が走っている問題に対処すると思う。子エンティティの属性の1つをリッスンするNSFetchedResultsControllersがあります。私の修正は、検索対象の属性をエンティティリレーションツリーのルートエンティティに移動することでした。 NSFetchedResultsControllerが保存コンテキストをリッスンしている可能性があるNSManagedObjectContext.mergeChanges(...)のために、このクラッシュが発生したと思います。これはコアデータバグのようですが、XCodeはクラッシュ情報に十分な情報を与えていないので、これは純粋にスペキュレーションです – TopGunCoder

+0

TopGunCoder:抽象親エンティティからすべて継承したエンティティのツリーがある場合は、 Core DataはこれらのエンティティをすべてSQLite内の単一のテーブルに入れているためです。 –

0

コントローラーのどこかにuidの代わりにidを設定しようとしました。

関連する問題