如何在swift中将NSIndexPath添加到NSUserDefaults

pkc*_*456 4 nsuserdefaults uitableview nsindexpath ios swift2

我想保存NSIndexPathNSUserDefaults,但有以下异常: -

尝试将非属性列表对象{length = 2,path = 0 - 12}设置为键LastSelectedIndeX的NSUserDefaults/CFPreferences值

我的代码: -

let selectedIndexPath = tableView.indexPathForSelectedRow
   NSUserDefaults.standardUserDefaults().setObject(selectedIndexPath, forKey: "lastSelectedIndex")
   NSUserDefaults.standardUserDefaults().synchronize()
Run Code Online (Sandbox Code Playgroud)

那么如何保存NSIndexPath以便以后可以在另一个视图控制器上使用它.

Kir*_*odi 12

您无法直接在NSUserDefault中保存indexPath.您可以在NSUserDefault中存储NSArray,NSDictionary,NSNumber,NSString和NSDictionary.

存储IndexPath使用NSKeyedArchiver:

let data = NSKeyedArchiver.archivedDataWithRootObject(selectedIndexPath)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "indexKey")
Run Code Online (Sandbox Code Playgroud)

获取IndexPath使用NSKeyedArchiver:

let data1 = NSUserDefaults.standardUserDefaults().objectForKey("indexKey") as? NSData
let indexP1 = NSKeyedUnarchiver.unarchiveObjectWithData(data1!) as! NSIndexPath
Run Code Online (Sandbox Code Playgroud)