3

iOS 9 連絡先フレームワークを使用して既存の連絡先グループを削除しようとした人はいますか?

連絡先ストアを初期化し、連絡先グループのリストを要求します。これにより、CNGroupインスタンスの配列が得られます。

var groups: [CNGroup]?

do {
    self.groups = try contactStore.groupsMatchingPredicate(nil)
}
catch { ... }

次に、グループを表形式で表示します。ユーザーがテーブル ビューのセルをスワイプすると、対応するグループを連絡先ストアから削除したいと考えています。

ただし、 のdeleteGroupメソッドには、ではなくインスタンスがCNContactStore必要です。Xcode でエラーが表示されます。CNMutableGroupCNGroup

Cannot convert value of type 'CNGroup' to expected type 'CNMutableGroup'

CNGroup明らかに、インスタンスをにキャストしようとするとCNMutableGroup:

let saveRequest = CNSaveRequest()
saveRequest.deleteGroup(group as! CNMutableGroup)
do {
    try contactStore.executeSaveRequest(saveRequest)
}
catch { ... }

実行時にクラッシュします。

Could not cast value of type 'CNGroup' (0x370890f8) to 'CNMutableGroup' (0x370899f4)

これはCNGroupのスーパークラスであるためだと思いますが、インスタンスで初期化するCNMutableGroup方法がわかりません。CNMutableGroupCNGroup

Contacts フレームワークへのアクセスをリクエストしました。Xcode 7.3、iOS 9.2.1。

では、連絡先グループを削除する方法についてのアイデアはありますか?

4

1 に答える 1

6

CNGroup の変更可能なコピーをキャストすると、これが修正されます。

let saveRequest = CNSaveRequest()
saveRequest.deleteGroup(group.mutableCopy() as! CNMutableGroup)
do {
    try contactStore.executeSaveRequest(saveRequest)
}
catch { ... }
于 2016-05-06T14:05:11.200 に答える