我正在使用swift 3.0開發一個項目,其中有一個名爲「PlayListDetails」的實體的核心數據模塊。這包含兩個子元素名稱playlistName和trackID。因此每個播放列表名稱都有一個與其交叉的trackID。我的要求是當indexPath.row被傳遞時刪除一個特定的元組。雖然我執行方法後實施了一種方法,但它給了我一個例外,說「致命錯誤:索引超出範圍」。我的方法如下:保存數據和我用來刪除數據的方法。從核心數據中的實體中刪除記錄
保存
public static func savePlaylistDetails(audio:[(title:String,healerName:String,trackUrl:String, trackID:String, imageUrl: String)] = [], playListName: String) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let newPlaylist = NSEntityDescription.insertNewObject(forEntityName: PlayList_DETAILS_ENTITY, into: context)
let track = audio.map{$0.trackID}
print("Track",track)
let trackId = track[0]
print("ID is :",trackId)
newPlaylist.setValue(playListName, forKey:"playlistName")
newPlaylist.setValue(trackId, forKey:"trackID")
do{
try context.save();
print("Saved.....")
}
catch{
print("There was an error")
}
}
刪除//這是我得到的異常,而我選擇的rowIndex傳遞給函數
func deleteCoreData(rowIndex: Int) {
let managedContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
var playList = [PlayListDetails]()
managedContext.delete(playList[rowIndex]) // this is where the exception throws
do {
try managedContext.save()
}catch{
print("fail")
}
}
我在想什麼?
該刪除的一切,我有 – danu
你必須做謂語,因爲我已經在上面(評論)提供的,與謂詞你有爲您想要刪除的項目提供條件! – dip
一個示例代碼片段將非常讚賞 – danu