2016-03-29 137 views
2

任何人試圖使用iOS 9聯繫人框架刪除現有聯繫人組?刪除iOS聯繫人組

我初始化聯繫人存儲器,並請求觸頭組的列表中,這使我CNGroup實例的數組:

var groups: [CNGroup]? 

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

,然後我顯示在表視圖的組。當用戶滑動表格視圖單元格時,我想從聯繫人存儲中刪除相應的組。

但是,CNContactStoredeleteGroup方法需要實例,而不是CNGroup。 Xcode中給我一個錯誤:

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

很顯然,如果我嘗試了CNGroup實例轉換爲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 { ... } 

我在運行時得到一個崩潰這是因爲CNGroupCNMutableGroup的超類,但後來我再也看不到如何獲得CNMutableGroup初始化機智h CNGroup實例。

我已請求訪問聯繫人框架。 Xcode 7.3,iOS 9.2.1。

那麼,關於如何刪除聯繫人組的任何想法?

回答

4

投射CNGroup的可變副本修復此問題。

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

最後在iOS 10.3中用Xcode 8.3 + Swift 3.1在最新的API語法中試用了contactStore.execute(saveRequest)。謝謝! –