我正在尝试将NSIndexPath
保存在NSUserDefaults
,但出现以下异常:-
尝试将非属性列表对象{长度= 2,路径= 0 - 12}设置为项LastSelectedIndexNSUserDefaults/CFPreferences值
我的密码:-
let selectedIndexPath = tableView.indexPathForSelectedRow
NSUserDefaults.standardUserDefaults().setObject(selectedIndexPath, forKey: "lastSelectedIndex")
NSUserDefaults.standardUserDefaults().synchronize()
那么,我如何保存NSIndexPath
,以便稍后在另一个视图控制器中使用它呢?
4条答案
按热度按时间xuo3flqw1#
无法将indexPath直接保存在NSUserDefault中。可以将NSArray、NSDictionary、NSNumber、NSString和NSDictionary存储在NSUserDefault中。
使用
NSKeyedArchiver
存储索引路径:使用
NSKeyedArchiver
获取索引路径:xghobddn2#
正如其他人所提到的,
(NS)IndexPath
不符合属性列表。一个解决方案是使用
UserDefaults
的这个简单扩展将IndexPath
保存为两个整数的数组您可以在编辑历史中找到旧Swift版本的语法。
ne5o7dgx3#
此Swift代码适用于任何深度的IndexPath
fafcakar4#
你可以这样做,
保存为,
检索类似,
您必须将indexpath转换为数据,然后才能保存和检索。
希望这对你有帮助:)