尝试将indexPath保存到NSUserDefaults时出错

时间:2014-02-02 11:18:19

标签: objective-c nsuserdefaults nsindexpath

我正在尝试为UICollectionView保存indexPath,但是我收到以下错误:

libc++abi.dylib: terminating with uncaught exception of type NSException

我的代码是: 保存索引路径:

[[NSUserDefaults standardUserDefaults] setObject:indexPath forKey:@"CollectionIndex"];
[[NSUserDefaults standardUserDefaults] synchronize];

加载indexPath:

NSIndexPath *storedIndexPath = [[NSUserDefaults standardUserDefaults] objectForKey:@"CollectionIndex"];

我已经注释掉代码以找出导致错误的代码,这是我用来保存创建SIGABRT错误的indexPath的代码。

1 个答案:

答案 0 :(得分:8)

阅读NSUserDefaults > setObjectForKey的文档:

  
    

“value参数只能是属性列表对象:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。对于NSArray和NSDictionary对象,其内容必须是属性列表对象。请参阅”什么是属性列表?“在“物业清单编程指南”中。“

  

要在UserDefaults中保存indexPath,您必须进行另一种表示,例如作为字典:

[[NSUserDefaults standardUserDefaults] setObject:@{@"row": @(indexPath.row),
                                                   @"section": @(indexPath.section)}
                                          forKey:@"CollectionIndex"];