【问题标题】:Rearranging order of TableView cells using Core Data使用 Core Data 重新排列 TableView 单元格的顺序
【发布时间】:2015-07-05 21:47:07
【问题描述】:

我有一个自定义 UITableView 类来处理表格视图的动画,并且已经使用在表格视图中显示的Array 测试了以下代码。

tableView.didMoveCellFromIndexPathToIndexPathBlock = {(fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) -> Void in

  self.objectsArray.exchangeObjectAtIndex(toIndexPath.row, withObjectAtIndex: fromIndexPath.row)

}

这适用于基本数组,但我实际上想重新排列 NSSet 类型的托管对象。因此,在我的文件中,我声明了以下内容,它创建了返回表视图使用的 Item 类型的数组。

文件夹类函数:

 func itemArray() -> [Item] {
    let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
    return iist.sortedArrayUsingDescriptors([sortDescriptor]) as! [Item]
}

表格视图控制器声明

var itemArray = [Item]()
    itemArray = folder.itemArray() //class function to return a NSArray of the NSSET [Item]

我正在尝试这样做,因此在重新排列单元格时它会更改 NSSet 的顺序,以便在应用程序重新加载时保存它,有人有什么建议吗?

【问题讨论】:

    标签: ios arrays swift uitableview core-data


    【解决方案1】:

    根据定义,NSSet 没有顺序,因此没有本地方法可以让您保持 NSSet 的顺序。我不是说不可能,但你不能按照你的想法去做。

    来自Apple's NSSet Documentation

    NSSet、NSMutableSet 和 NSCountedSet 类声明了到无序对象集合的编程接口。

    您需要将 NSSet 转换为 NSMutableArray 并引用该数组而不是 NSSet。

    【讨论】:

    • 当您说将我的 NSSet 转换为 Mutable Array 时,您是指将我的类函数转换为 NSMutableArray 吗?
    • 不,你不能只是投射它。您需要更改您的函数以使用 NSMutableArray 而不是 NSSet。您可能会使用 yourMutableArray = [mySet allObjects] 之类的东西初始化此数组,然后继续使用此数组进行排序
    • 感谢您的帮助,我目前仍在处理您的建议,不幸的是遇到了问题,如果您想查看它,请发表不同的帖子。 stackoverflow.com/questions/31257572/…
    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多