我通常会在UiTableView
中保存NSUserDefaults
的所选indexPath,这就是我通常的做法:
self.lastIndexPathUsed = indexPath.row;
NSUserDefaults *userdefaults = [NSUserDefaults standardUserDefaults];
[userdefaults setObject:[NSString stringWithFormat:@"%ld",(long)indexPath.row] forKey:@"lastIndexPathUsedForSellerType"];
[[NSUserDefaults standardUserDefaults] synchronize];
然后我恢复它:
self.lastIndexPathUsed = [[[NSUserDefaults standardUserDefaults] objectForKey:@"lastIndexPathUsedForSellerType"] floatValue];
所以self.lastIndexPathUsed
只是一个浮点值。
以上在单个选择表视图中工作正常。然而,在多选桌面视图中,我无法看到它的工作原理。
当UITableView在屏幕上时,我将所有indexPaths保存到一个数组中。但是,将该数组保存到NSUserDefaults
会导致崩溃,因为indexPath不是这样的对象。
如何保存数组indexPaths如何进入NSUserDefaults?
答案 0 :(得分:1)
尝试将阵列存档到NSData
,然后再将其保存到NSUserDefaults
:
NSData *indexPathArrayData = [NSKeyedArchiver archivedDataWithRootObject:_indexPathArray];
从NSData
获取NSUserDefaults
后,您可以取消归档:
_indexPathArray = [NSKeyedUnarchiver unarchiveObjectWithData:indexPathArrayData];
答案 1 :(得分:1)
你可以试试这个:
[[NSUserDefaults standardUserDefaults] setObject:yourMutableArray forKey:@"Key"];
然后就这样:
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"Key"]];
希望它有所帮助。