使用 NSCoding 保存 TableView 单元格的重新排序

     2023-03-03     248

关键词:

【中文标题】使用 NSCoding 保存 TableView 单元格的重新排序【英文标题】:Saving reorder of TableView cells using NSCoding 【发布时间】:2016-02-01 19:08:59 【问题描述】:

我正在使用Xcode7Swift2 处理一个iOS 项目。我有一个TableView,它从NSCoding 获取array。我已经启动它,以便用户可以在TableView 中重新排序TableViewCells。但是,一旦用户完成并单击“完成”,即UIBarButtonItem,我需要它来保存新订单。我的NSCoding object 中有一个名为cellOrder 的值。我看了here,看到了CoreData。我将如何为NSCoding 执行此操作以及将其保存在哪里?

我为TableViewCell 运动启动了以下代码:

func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool 
    return true


func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) 

    let itemToMove = details[fromIndexPath.row]

    details.removeAtIndex(fromIndexPath.row)

    details.insert(itemToMove, atIndex: toIndexPath.row)


details 是保存我的数据的数组,使用NSCoding

【问题讨论】:

【参考方案1】:

我认为对我来说最好的方法是在重新排序完成后将 details array 保存到 NSUserDefaults。我看到here 如何将NSObject 转换为NSData 以进行保存。我的moveRowAtIndexPath 部分的代码现在是:

func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) 

    let itemToMove = details[fromIndexPath.row]

    details.removeAtIndex(fromIndexPath.row)

    details.insert(itemToMove, atIndex: toIndexPath.row)

    // Archive NSObject and save as NSData
    let myData = NSKeyedArchiver.archivedDataWithRootObject(details)

    // NSUserDefaults Save for Reorder of cells
    reportDefaults.setObject(myData, forKey: "savedReportListKEY")
    reportDefaults.synchronize()

    // NSCoding Save
    saveReport()


【讨论】:

如何使用 NSCoding 保存结构

】如何使用NSCoding保存结构【英文标题】:HowtosaveastructwithNSCoding【发布时间】:2017-10-1817:21:27【问题描述】:如何使用NSCoding保存我的结构,这样即使用户使用它也不会改变关闭应用程序?如果您也能告诉我如何正确实现缺失的... 查看详情

使用 NSCoding 保存结构的 Helperclass

】使用NSCoding保存结构的Helperclass【英文标题】:HelperclassforsavingstructswithNSCoding【发布时间】:2017-01-2308:36:00【问题描述】:我想写一个函数来保存我的结构数组。我知道,使用NSCoding是正确的方法,但仅适用于类。但我找到了一... 查看详情

使用 NSCoding Swift 保存对象时出现异常

】使用NSCodingSwift保存对象时出现异常【英文标题】:ExceptionwhensavingobjectwithNSCodingSwift【发布时间】:2017-09-2318:14:35【问题描述】:我在尝试使用NSCoding保存/归档对象时遇到了一些问题。我基本上有一个QA类,它定义了一个问题和... 查看详情

NSCoding 游戏数据未快速保存

】NSCoding游戏数据未快速保存【英文标题】:NSCodinggamedatanotsavedswift【发布时间】:2015-04-2409:57:50【问题描述】:目前,我的数据没有在另一个新会话中检索到,它使用默认值。我必须有一个现有的plist文件才能工作吗?我尝试使... 查看详情

保存 PFObject NSCoding

】保存PFObjectNSCoding【英文标题】:SavingPFObjectNSCoding【发布时间】:2014-05-3122:24:37【问题描述】:我的问题:saveInBackground不起作用。它不起作用的原因:我正在使用NSKeyedArchiving将存储在NSArray中的PFObjects保存到文件中。我这样做... 查看详情

无法通过 NSCoding 保存表数据

】无法通过NSCoding保存表数据【英文标题】:UnabletosavetabledataviaNSCoding【发布时间】:2014-02-1823:15:30【问题描述】:我有一个用于显示表数据的对象数组(包含项目名称和创建日期)。我想使用NSCoding协议保存这个数组。每次按下... 查看详情

Swift,NSCoding 保存类的数组不起作用

】Swift,NSCoding保存类的数组不起作用【英文标题】:Swift,NSCodingtosavearrayofaclassnotworking【发布时间】:2016-04-2614:23:32【问题描述】:我是Swift和iOS的新手,在制作应用程序时遇到了这个问题。我想基本上使用NSCoding将用户数据存储... 查看详情

为啥 NSCoding 无法在正确保存后解码对象?

】为啥NSCoding无法在正确保存后解码对象?【英文标题】:WhyisNSCodingunabletodecodeanobjectoncesavedproperly?为什么NSCoding无法在正确保存后解码对象?【发布时间】:2020-01-1419:19:26【问题描述】:这是我在核心数据中保存为可转换的完整... 查看详情

iCloud - NSCoding 或核心数据

】iCloud-NSCoding或核心数据【英文标题】:iCloud-NSCodingorCoreData【发布时间】:2015-10-1408:44:39【问题描述】:我有一个使用NSCoding的应用程序,3个类,不相关-因此使用简单的NSCoding方法来保存我的对象数组。但是,现在是iCloud的问... 查看详情

如何归档 NSDictionary 的 NSArray(使用 NSCoding)?

】如何归档NSDictionary的NSArray(使用NSCoding)?【英文标题】:HowdoIarchiveanNSArrayofNSDictionary(withNSCoding)?【发布时间】:2011-03-2707:17:01【问题描述】:假设我将数据保存在这样的数组中wordList=[[NSMutableArrayalloc]init];while([rsnext])//Somedatab... 查看详情

将 Codable 保存到 UserDefaults 并匹配 NSCoding 的外观

】将Codable保存到UserDefaults并匹配NSCoding的外观【英文标题】:SaveaCodabletoUserDefaultsandmatchingthelookofNSCoding【发布时间】:2019-07-2322:10:39【问题描述】:我有一个名为Station的struct,它支持Codable协议。由于它是一个结构体,它不能支... 查看详情

如何对 NSCoding 进行单元测试?

】如何对NSCoding进行单元测试?【英文标题】:HowtounittestNSCoding?【发布时间】:2011-11-2509:27:27【问题描述】:我有一个使用NSCoding更准确地说是NSKeyedArchiver保存数据的iOS应用程序。此应用程序已在AppStore上架。我正在开发应用程... 查看详情

如何在 Swift 3 中使用持久化和检索符合 NSCoding 的对象到应用程序文档目录?

】如何在Swift3中使用持久化和检索符合NSCoding的对象到应用程序文档目录?【英文标题】:Howtousepersist&retrieveanNSCodingcompliantobjecttoappDocumentdirectoryinSwift3?【发布时间】:2016-07-2919:12:48【问题描述】:这是一个符合NSCoding的对象... 查看详情

Swift NSCoding - 如何读取编码数组

】SwiftNSCoding-如何读取编码数组【英文标题】:SwiftNSCoding-Howtoreadanencodedarray【发布时间】:2017-05-2200:39:58【问题描述】:我正在使用SwiftPlayground使用NSCoding编写父子关系。关系可以描述为:一个Author可以写多个Books但是,当我尝... 查看详情

Objective-C:如何让它为 NSCoding 保存两个文件而不是一个文件?

】Objective-C:如何让它为NSCoding保存两个文件而不是一个文件?【英文标题】:Objective-C:HowtomakeitsavetwofilesinsteadofoneforNSCoding?【发布时间】:2011-12-1323:45:05【问题描述】:我的代码在这里:-(void)loadDataFromDisk[dictrelease];NSMutableData*dat... 查看详情

使用 WebService 更新 TableView 并保存到 CoreData

】使用WebService更新TableView并保存到CoreData【英文标题】:UpdatingaTableViewwithaWebServiceandSavingtoCoreData【发布时间】:2010-05-1801:34:28【问题描述】:我正在做一个项目,我有一个表视图,该表视图当前通过返回XML的Web请求进行更新。... 查看详情

如何使用 Swift 保存从 tableView 上的 textField 收到的用户答案

】如何使用Swift保存从tableView上的textField收到的用户答案【英文标题】:HowdoyousaveuseranswersreceivedfromatextFieldonatableViewusingSwift【发布时间】:2017-08-1401:14:02【问题描述】:我做了一个小测验,其中tableView包含不同的问题和答案作为... 查看详情

使用 NSCoding 协议传递值

】使用NSCoding协议传递值【英文标题】:PassvalueusingNSCodingProtocol【发布时间】:2017-07-3112:17:21【问题描述】:我正在尝试在使用NSCoding协议单击UITabelViewCell内的单元格时将数据传递到详细信息页面NSCoder*coder=[[NSCoderalloc]init];[coderenc... 查看详情