2016-03-29 12 views
2

誰もがiOS 9コンタクトフレームワークを使用して既存のコンタクトグループを削除しようとしましたか?iOSコンタクトグループの削除

私は接触ストアを初期化してくれCNGroupインスタンスの配列を与える連絡先グループのリストを要求:

var groups: [CNGroup]? 

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

し、私はテーブルビューでグループを表示。ユーザーがテーブルビューのセルをスワイプすると、コンタクトストアから対応するグループを削除します。

ただし、CNContactStoreの方法は、CNGroupではなく、CNMutableGroupインスタンスを必要とします。私はCNMutableGroupCNGroupインスタンスをキャストしようとした場合、明らかに

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

::私は実現

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

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

が、私は、実行時にクラッシュを取得Xcodeは私にエラーを与えますこれはCNGroupCNMutableGroupのスーパークラスだからですが、もう一度私はどのように取得するのか分かりませんCNMutableGroup初期化されたウィットh CNGroupインスタンス。

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

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

答えて

4

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

+0

最終的に、最新のAPI構文で「try contactStore.execute(saveRequest)」としてXcode 8.3 + Swift 3.1でiOS 10.3でこれを検証しました。ありがとう! –