2016-04-14 17 views
2

アドレス帳に連絡先の削除を実装しようとしていますが、次のエラーが表示されます。ここでiOS:アドレス帳から連絡先を削除できません:[CNDataMapperContactStore executeSaveRequest:error:]

は私の実装です:この行で

CNMutableContact *contact = [[cnContacts objectAtIndex:i] copy]; 
     [cnContacts removeObjectAtIndex:i]; 


     CNSaveRequest *request = [[CNSaveRequest alloc] init]; 
     [request deleteContact:contact]; 

     NSError *error; 
     if (![self.ContactStore executeSaveRequest:request error:&error]) { 
      if (error) 
      { 
       NSLog(@"error = %@", error.description); 
      } 
     } 

if (![self.ContactStore executeSaveRequest:request error:&error]) { 

私はコンソールでこのエラーを取得しています:

- [CNContact setSnapshot:]:認識されていないセレクタインスタンスに送信0x145de3940

また、このエラーは表示されます:

Contacts`-[CNDataMapperContactStore executeSaveRequest:error:]: 
libdispatch.dylib`_dispatch_mgr_thread: 

enter image description here enter image description here

あなたのいずれかが、なぜこのエラーや、私が私の実装で間違ってやっているのを知っています。

答えて

1

私はこのAPIを知らないが、周りを探し、私はそれを参照してください。

[request deleteContact:contact]; 

CNMutableContactオブジェクトを必要とし、あなたはcopyを使用することによって、それは不変行った:

CNMutableContact *contact = [[cnContacts objectAtIndex:i] copy]; 
// contact is actually a CNContact object 

あなたはmutableCopyをしたいですしかし、cnContactsにはCNMutableContactのインスタンスが含まれていると仮定してコピーを作成する必要はありません。配列から削除するとオブジェクトがまだ参照されていないため、オブジェクトを破棄しませんカリー。

私だけsnapshotは(私はクラス参照に、このプロパティについて何も見えない)CNContactでは使用できませんCNMutableContactの私有財産であるため、認識されていないセレクタ例外と仮定することができます。

+0

mutableCopyトリックをしましょう。ありがとうございました! – user2924482

関連する問題