ios - 默认情况下直接添加到数组

标签 ios objective-c uitableview defaults

这样调用可以吗?

[[[NSUserDefaults standardUserDefaults] objectForKey:@"searchEnginesOrder"] addObject:@"eBay"];

我有一个 UITableView,我想直接从默认值加载它的单元格,我还想修改这些默认值。我想知道上面的行是否真的有任何效果(当我 NSLog 默认数组 searchEngineOrder 为空时,我想知道是否是因为上面的代码不是实际上添加到默认值。

最佳答案

一般来说,那行代码会崩溃。用户默认返回不可变对象(immutable对象),因此调用 addObject: 将引发异常。

您也不应该依赖对返回的对象所做的更改返回到数据存储中 - 这不是特定于用户默认值的,它适用于任何未将其记录为受支持的 API。

您应该通过定义的修改和保存点将工作数据和存储数据之间的逻辑分开。确保您可变复制从用户默认值中提取的数据。您还应该使用 registerDefaults: 设置初始值,这样您就不需要检查是否存在。

关于ios - 默认情况下直接添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21600270/

相关文章:

ios - 使用键盘显示动画 View (按钮)

ios - 为什么 iMessages 会更改我通过 UIActivityViewController 传递给它的 URL?

ios - 自定义 UITableViewCell 未出现

ios - cellForRowAtIndexPath 数据源方法的问题

ios - 使用 ActivityIndi​​catorIOS 时 React Native 元素类型无效错误

ios - 为什么不将值添加到 NSMutableArray?

ios - TouchesBegan 在下一个 View Controller 中被识别

ios - Whole Session 下载进度 Alamofire

ios - UILabel 即使有剩余行也会截断

objective-c - 刷新整个 NSFetchedResultsController tableView