将自定义对象存储在 NSUserDefaults 中

2023-12-13

我试图按如下方式存储自定义对象,但出现错误。

// store data
NSMutableArray *archiveArray = [NSMutableArray arrayWithCapacity:pOrderElements.count];
for (id orderObject in pOrderElements) {
    NSData *personEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:orderObject];
    [archiveArray addObject:personEncodedObject];
}

NSUserDefaults *userData = [NSUserDefaults standardUserDefaults];
[userData setObject:archiveArray forKey:@"personDataArray"];


// retrive data
NSData *data = [userData objectForKey:@"personDataArray"];
// the following line throws an error
id retrieveData = [NSKeyedUnarchiver unarchiveObjectWithData:data];

这是我的 pOrderElements

(lldb) po pOrderElements
<__NSArrayM 0x174256b90>(
{
    category = 1;
    imagePath = "products/chicken-kabob.png";
    name = "Baked Chicken";
    price = "5.49";
}
)

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[__NSCFArray 字节]: 无法识别的选择器发送到实例 0x174264f40'


您取消归档不正确的对象。将 NSArray 存储到 NSUserDefaults

NSArray * archiveArray = [userData objectForKey:@"personDataArray"];
for (NSData *personEncodedObject in archiveArray) {
    id personObject = [NSKeyedUnarchiver unarchiveObjectWithData:personEncodedObject];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将自定义对象存储在 NSUserDefaults 中 的相关文章

随机推荐

  • BProlog 8.1 中的制表性能不均匀

    我用表格功能做了一些实验b prolog8 1 版本 我对观察到的性能感到非常惊讶 这是我使用的代码 它计算的数量Collatz steps N减少一些正整数所需的I向下1 table posInt CollatzSteps 2 remov
  • 尝试通过原始 IP 数据包发送数据时的 EMSGSIZE

    我的代码将原始 IP 数据包发送到12 12 12 12并失败 因为EMSGSIZE 我认为它根据以太网 MTU 限制我的数据包 但它应该发送 我尝试将数据包发送至127 0 0 1这工作得很好 但是当我将数据包发送到非本地 IP 时 就会
  • 具有多个分隔符的 sql-maven-plugin

    我正在使用 sql maven plugin 在多个数据库上执行一些 MySQL 脚本 我想在同一个 SQL 脚本中部署表 数据 触发器 事件和存储过程 我的行分隔符有问题 因为对于 INSERT 或 CREATE 我使用 但对于我的触发器
  • ServicePointManager.DefaultConnectionLimit 返回 Int32.MaxValue

    出于诊断目的 我正在记录 ServicePointManager DefaultConnectionLimit 然而奇怪的是 它似乎返回 Int32 MaxValue 即 2147483647 这似乎与MSDN 文档就此主题而言 Servi
  • 在信号处理的上下文中到底哪些变量需要 sig_atomic_t ?

    这是一个简单的玩具程序 使用volatile sig atomic t include
  • 将 PHP 与 asp.net / asp.net-mvc 集成的最佳方式

    巧合的是 这个问题在上周出现了两次 客户有一个想要保留的现有 PHP 网站 他们还拥有或即将拥有一些 ASP net 网页 希望将其集成到现有站点中 使其显示为单个站点 我们想到了以下几种可能性 使用 IFrame 将所有 html 菜单复
  • dbModel 读取资源在 Magento 版本 1.3.2.4 中未实现 Zend_Db_Adapter_Abstract

    我为我的 Magento 项目创建了一个自定义模块 该模块适用于 Magento 1 6 X 但是当我在 Magento 版本 1 3 2 4 中安装此扩展时 Magento 抛出以下错误 dbModel read resource doe
  • 下载一张带有 HTML 图像内容的笔记页面

    当我们使用 one note API 图像源获取 HTML 形式的页面内容时 图像源似乎无法正常工作 HTML 内容中图像源的末尾有一个 value 当一个笔记页面有图像时 我们该如何处理 Ex img 宽度 649 高度 587 src
  • Spark:使用scala从s3读取csv文件

    我正在编写一个 Spark 作业 尝试使用 scala 读取文本文件 以下内容在我的本地计算机上运行良好 val myFile myLocalPath myFile csv for line lt Source fromFile myFil
  • 执行任何 IO/Stream 时 C++ JNI 崩溃/挂起

    当我尝试编译 C 代码以在 JAVA 端使用时 我似乎遇到了一个大问题 当我尝试执行任何与 IO Stream Manipulation 相关的操作时 JVM 似乎崩溃了 有时 就像我每 10 次运行应用程序时 JNI 可以 100 处理所
  • R dplyr:非标准评估难度。想要在过滤器和变异中使用动态变量名称

    我创建了一个可重现的示例来说明我在 R dplyr 中进行非标准评估时遇到的问题 我想在下面的场景中使用动态变量名称 Given a data frame of patient data I need to find records con
  • Outlook VBA 打开 Excel

    我正在尝试从 Outlook 打开现有的 Excel 工作表 我可以看到工作簿打开 然后又立即关闭 我将 Excel Application 设置为可见 有任何想法吗 这是代码 Function openNewForm toDoSubjec
  • Spring MVC 转换方法

    我有车辆服务 其中包括零件清单 添加新服务不是问题 查看服务也不是问题 但是当我尝试实现编辑时 它不会预先选择零件列表 所以 认为这是 Thymeleaf 问题 我发布了问题here 我得到的答案是尝试实现 spring 转换服务 我就是这
  • 获取 R 中每组的最后一行[重复]

    这个问题在这里已经有答案了 我有一些结构类似于 a lt data frame ID c A A B B C C NUM c 1 2 4 3 6 9 VAL c 1 0 1 0 1 0 我正在尝试对其进行排序ID and NUM然后得到最后
  • 有效删除 NumPy 中的行

    我有一个很大的 numpy 数组 其中有很多 ID 值 称之为 X X id rating 1 88 2 99 3 77 4 66 我还有另一个 坏ID 的numpy数组 它表示我想从X中删除的行 B 2 3 所以当我完成后 我想 X id
  • 如何在 Firebase 函数中获取提供程序访问令牌?

    我计划编写有关身份验证用户创建的 Firebase 函数 我的目标是获得 Facebook 用户页面的长期访问令牌 为此 我需要 Firebase 函数中的用户访问令牌 下面尝试过 exports saveLongLiveToken fun
  • 如何在 iOS 中检测视频文件是纵向录制还是横向录制

    我在用AlAssetsGroup enumerateAssetsAtIndexes列出照片 相机 应用程序中的资源 对于给定的视频资源 我想确定它是以纵向模式还是横向模式拍摄的 在下面的代码中 资产是AlAsset我已经测试过它是否是视频资
  • AWS VPC私有链接-API网关

    我有一个带有公有子网和私有子网的 VPC NLB 部署到私有子网 并且有 5 个侦听器 port 9000 forwarding to targetgroup 01 port 9001 forwarding to targetgroup 0
  • 为什么 nextjs 在构建时会在第一次加载时加载所有页面

    我在我的新网站中使用 nextJS 但 SEO 和网站的速度对我来说非常重要 我想做的是防止加载额外的资源文件 而我不需要它们 例如 当我在主页时 我不需要在后台加载常见问题解答或关于页面的资源 我是否可以阻止网站上的这些额外负载 先感谢您
  • 将自定义对象存储在 NSUserDefaults 中

    我试图按如下方式存储自定义对象 但出现错误 store data NSMutableArray archiveArray NSMutableArray arrayWithCapacity pOrderElements count for i