gpt4 book ai didi

iOS:编辑 TableView 中的项目问题

转载 作者:行者123 更新时间:2023-11-30 13:54:40 24 4
gpt4 key购买 nike

所以我尝试为 TableView 中的行编写删除编辑行为。但是,当我在选择一行后按下删除键时,该行不会从 tableView 中删除。当我第二次尝试执行此操作时,收到一条错误消息,指出发现了意外的 nil 值。

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete { // Handle the Delete action
// Obtain the name of the genre of movie to be deleted
let genre: String = genres[indexPath.section]

// Obtain the list of movies in the genre as AnyObject
let movies: AnyObject? = applicationDelegate.dict_Genres_dict2[genre]
let movArray: [String] = movies?.allKeys as! [String] //The nil value is unwrapped on this line
// Typecast the AnyObject to Swift array of String objects
var moviesOfGenre: Array<String> = movArray

// Delete the identified movie at row
moviesOfGenre.removeAtIndex(indexPath.row)

if moviesOfGenre.count == 0 {
// If no movie remains in the array after deletion, then we need to also delete the genre
applicationDelegate.dict_Genres_dict2.removeObjectForKey(genre)

// Since the dictionary has been changed, obtain the genre names again
genres = applicationDelegate.dict_Genres_dict2.allKeys as! [String]

// Sort the genre names within itself in alphabetical order
genres.sortInPlace { $0 < $1 }
}
else {
// At least one more movie remains in the array; therefore, the genre stays.

// Update the new list of movie for the genre in the NSMutableDictionary
applicationDelegate.dict_Genres_dict2.setValue(moviesOfGenre, forKey: genre)
}

// Reload the rows and sections of the Table View
tableView.reloadData()
}
}

我已经标记了哪一行接收到 nil 值。任何朝着正确方向的插入都会是最有帮助的。谢谢!

最佳答案

删除数组项后。您也需要从表中删除该项目。当您尝试再次删除数组项目时,它显示 nil,因为该项目不可用,但表没有从 View 中删除该项目。所以您需要删除它也从表中...

        genres.removeAtIndex(indexPath.row) // or section , delete according to your app   
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)

为什么要删除要删除的项目的一部分。您没有从表中删除流派项目。您只删除了 movieOfGenre。您还需要删除 TableView 项目(流派)。也从表中删除流派。

您还可以使用滑动删除功能:-

func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
return true
}

func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
if (editingStyle == .Delete) {
// handle delete (by removing the data from your array and updating the tableview)

self.tableView.beginUpdates()
self.genres.removeObjectAtIndex(indexPath.row) // also remove an array object if exists.
self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Left)
self.tableView.endUpdates()
}

关于iOS:编辑 TableView 中的项目问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33794810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com