使用嵌套自定义对象进行 NSCoding?

2023-11-24

我有一系列嵌套对象,我需要将它们通过 NSCoding 协议,以便我可以将顶级对象保存到 NSUserDefaults 中。

这是对象的结构:

“导师”班

  • NSMutableArray 保存...的实例

‘类’类

  • NSMutableArray 保存...的实例

“学生”班

  • 名称 属性
  • 数字属性
  • 金钱财产

我需要将 Instructor 的实例保存到 NSUserDefaults 或应用程序的文档中。正如您所看到的,Instructor 对象保存着一个数组,该数组保存着一个类的实例。该类对象保存着学生的实例。

NSCoding 协议是递归的吗?我的意思是,如果我将 NSCoding 协议添加到每个类中,我就可以保存一个 Instructor 对象,并且它会递归地对所包含的对象进行编码?

那么解码时它会以同样的方式工作吗?我可以只解码一个讲师类,它会递归解码所包含的对象,因为它们也符合 NSCoding 协议?

我该如何进行设置?


是的,您可以(并且可能应该)将 NSCoding 的支持编写为递归。这就是 NSCoding 应该如何工作的。

当你实现encodeWithCoder时,只需调用

[coder encodeObject: aProperty forKey: @"propertyName"];

所有对象的属性,包括它的容器属性。

然后确保对象的对象图中的每个对象也符合 NSCoding。

对于标量属性,您可以使用 NSCoder 方法(例如encodeInt:forKey)保存标量值:

要将符合 NSCoding 的对象保存为用户默认值,请首先使用 NSKeyedArchiver 类方法 archivedDataWithRootObject 将其转换为 NSData,然后将结果数据保存到默认值中。真的很简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用嵌套自定义对象进行 NSCoding? 的相关文章

  • 如何向 JSQMessagesViewController 单元添加自定义视图,使其包含一个带有一些按钮和文本视图的视图?

    我在用https github com jessesquires JSQMessagesViewController issues 1820 https github com jessesquires JSQMessagesViewCont
  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • 使用 UIImagePickerController 的应用程序在拍照后选择“使用照片”时冻结

    我现在正在开发一个简单的照片和视频捕获应用程序 该应用程序成功地允许用户按下按钮即可拍摄照片或视频 但是 一旦您完成拍摄照片或视频 它就会提供 2 个选项 重新拍摄 和 使用照片 或 使用视频 具体取决于您使用的选项 如果用户点击 重新拍摄
  • 使用隐藏的 SFSafariViewController 获取 Safari cookie

    我正在阅读以下关于从移动网页到本机 iOS 9 应用程序对用户进行身份验证的文章 并且想知道如何最好地实现类似于下面讨论的隐藏控制器的隐藏 safari 视图控制器 https library launchkit io how ios 9
  • iOS 外部附件框架:如何获取特定 MFI 设备的协议字符串

    我正在编写一个 iOS 应用程序 用于与 mini mPlay Drumi MP18B 小型蓝牙扬声器 进行通信 据我所知 showBluetoothAccessoryPickerWithNameFilter仅显示协议字符串添加到 Info
  • WebGL iOS 渲染为浮点纹理

    我正在尝试在 iOS Safari 上的 WebGL 中渲染浮点纹理 而不是在本机应用程序中 我已经设法让 iOS 读取手动 例如从 JavaScript 创建的浮点纹理 但是当我创建浮点类型的帧缓冲区并使用 GPU 渲染到其中时 它不起作
  • 在 Interface Builder 中的资产目录上使用图像

    是否可以直接在界面生成器上使用添加到资产目录中的图像 这是怎么做到的 在 UIImageView 属性上 我看不到任何引用资产目录上任何图像的选项 Import the images into the xcassets folder 单击右
  • Swift:从自定义 UITableViewCell 中的 UITextField 检索文本并将其放入数组中

    我正在制作一个非常简单的应用程序 用户在第一个屏幕中输入人数 在第二个屏幕中 它会生成一些UITableViewCell基于用户在第一个屏幕中输入的数字 这UITableViewCell have a UITextField在其中 一旦用户
  • 从 RemoteIO 保存音频的示例?

    我进行了搜索 但没有找到任何从 RemoteIO 音频单元保存音频的好示例或教程 我的设置 使用 MusicPlayer API 我有几个 AUSamplers gt MixerUnit gt RemoteIO 音频播放效果很好 我想添加将
  • 如何使用 ZBar 读取器的 scanCrop 属性?

    我正在使用 iPhone 的 ZBar SDK 来扫描条形码 我希望阅读器仅扫描特定的矩形而不是整个视图 为此需要将阅读器的 scanCrop 属性设置为所需的矩形 我很难理解必须设置的矩形参数 有人可以告诉我如果在纵向视图上它的坐标是 我
  • 更改 UITextField 辅助功能描述

    有没有办法将 UITextField 的辅助功能标签设置为 文本字段 之外的其他内容 因此 我不想将其称为 文本字段 而是将其命名为 代码验证字段 我的建议是不要试图在内置语音输出上智取系统 对于盲人用户来说 文本字段正在编辑 相当于 该项
  • iPhone 标签栏上的未读计数

    在 Cocoa Touch 上实现 TabBar 上图标的未读计数的最佳方法是什么 我想模仿 SMS 或邮件应用程序的行为 向我的应用程序的用户显示未读消息计数 并使用包含数字的红点 您正在寻找的属性称为徽章 您可以通过执行以下操作来设置它
  • MKMapView 中显示多个注释标注

    是否可以同时打开多个标注 代码 void mapViewDidFinishLoadingMap MKMapView theMapView for id
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • 打印附加结构(swift 4)

    我有三个 textifled 用于将数据附加到结构中 如何打印我附加的内容 现在我收到一条错误消息 import UIKit class ViewController UIViewController IBOutlet var c UITe
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • Monotouch 和本机 iOS 代码

    是否可以将使用 monotouch 编译的 C 库与单个应用程序中的 Objective C 前端链接起来 或者该应用程序必须是全部还是全无 这是可能的 但您不会从 MonoTouch 工具获得任何帮助 并且您无法摆脱这样一个事实 您仍然需
  • 增加 NSData 的长度

    基本上 我有一个 46 个字符的 NSString 我将其转换为 NSData 我需要将字符串填充到 48 个字符 仅在 NSString 末尾添加 是行不通的 所以 我只是使用以下方法增加了 NSData 的长度 NSString str
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self

随机推荐

  • 如何使用线程执行单元测试? [复制]

    这个问题在这里已经有答案了 执行摘要 当线程中抛出断言错误时 单元测试不会终止 这是有道理的 因为不应该允许一个线程使另一个线程崩溃 问题是我该如何 1 在第一个辅助线程崩溃时使整个测试失败 或者 2 循环并在每个线程全部完成后确定它们的状
  • 如何通过Fiddler捕获Visual Studio Code流量?

    如何通过Fiddler抓取VS Code流量 我运行了我的 Fiddler 看起来工作正常 它可以捕获浏览器的流量 但不能捕获 VS Code 的流量 如果有人能给我解决方案 我真的很感激 Thanks 假设您正在使用一些 REST 客户端
  • 使用 typescript 创建猫鼬模型 - 子文档

    我正在使用打字稿实现猫鼬模型 如本文所述 https github com Appsilon styleguide wiki mongoose typescript models并且不确定当您使用子文档数组时这会如何翻译 假设我有以下模型和
  • 如何检查存储过程是否存在?

    我在网上搜索了一下 发现了一个post它使用以下代码片段来检查存储过程是否存在 select from USER SOURCE where type PROCEDURE and name my stored procedure 还有其他方法
  • Django,使用 ModelForm 更新用户配置文件

    我正在尝试为用户的个人资料显示一个简单的 ModelForm 并允许用户更新它 这里的问题是我的逻辑存在某种缺陷 在成功调用 form save 后 旧值显示在页面上 直到刷新才会显示适当的值 这里有什么问题吗 login required
  • 如何使用 Swift 4 在 UICollection 视图中进行多项选择

    我是 swift 的新手 从头开始构建 iOS 应用程序 使用 swift 4 想要执行如下操作 1 在UICollectionView中实现多单元格选择 2 将选定的单元格数据传递到服务器 请任何人都可以帮助我 该怎么做 告诉我执行此操作
  • 如何在 Windows 上获取硬件 MAC 地址

    我正在尝试从 NIC 检索 MAC 地址 有多种方法可以获取它 本文介绍了最常见的方法 http www codeguru com Cpp I N network networkinformation article php c5451 我
  • 单击传单标记即可转到 URL

    在 R 的传单包中 有没有办法单击标记并定向到 URL 这是JS解决方案 在 R 中 添加带有 URL 的弹出窗口 library leaflet content lt paste sep br b a href http www samu
  • 如何在 mac os x yosemite (10.10) 上安装 mcrypt 扩展

    我已将 Mac OS X 更新到 Yosemite 但这样做会覆盖我的所有开发环境 所以现在 要在本地 apache 上运行 Laravel 4 我需要安装 Mcrypt 扩展 但我尝试的一切都失败了 即使是在 OS X Mavericks
  • Android 蓝牙 VS 低功耗蓝牙

    我正在尝试创建一个应用程序 只要智能手机正在运行 就需要交换少量数据 只是为了通知设备足够接近 据我了解 传统的蓝牙会消耗大量电池 因此打开几个小时是不可行的 我正在考虑 BLE 但仍然担心电池容量 Q0 是否可以在手机运行时就开启BLE
  • JQuery DatePicker 背景颜色

    我正在使用 JQuery DatePicker 的示例链接文本 在我的 asp net 页面上 但是 日期选择器的背景颜色是白色 我不知道如何改变这个 更改为默认颜色 我的asp net页面背景页面是白色的 可能是这个原因 任何帮助将不胜感
  • 如何在模板中迭代 Django CHOICES - 不使用表单或模型实例

    我目前使用选项来定义月份列表和星期几列表 我想在我的模板中显示这些选择列表 而不必与特定实例或表单相关 例如 在我的模型中 MONTH CHOICES 01 January 02 February 03 March etc DAY CHOI
  • file_get_contents() 与使用 http/1.1 的上下文显着降低下载速度

    使用每个图像下载下面的代码 file get contents 平均需要 8 15 秒 如果我不在 file get contents 上使用上下文 则图像下载时间不到一秒 如果我将 opts 更改为 下面 我将获得与 file get c
  • 如何 - 单个 MongoDB 上的多个 Meteor 应用程序 - 相同的集合?

    以前有人问过这样的问题 如何在 Meteor 应用程序之间共享 MongoDB 集合 然而 答案并不清楚 我需要将 Meteor 公共应用程序和管理应用程序分开 出于多种原因 但主要是安全性和代码管理 使用接受的答案 export MONG
  • 有没有办法将进程的当前WorkingSet扩展到1GB? [复制]

    这个问题在这里已经有答案了 可能的重复 在C 中 有没有办法强制进程的WorkingSet为1GB 我们希望提前将 NET 进程的工作集增加到 1GB 以避免页面错误 有没有办法在 NET 中做到这一点 Update 不幸的是 即使我们打电
  • 如何删除babel添加的全局“use strict”

    我正在使用 use strict 的函数形式 并且不想要 Babel 在转译后添加的全局形式 问题是我正在使用一些不使用 use strict 模式的库 并且在连接脚本后可能会抛出错误 正如 Babel 6 中已经提到的 它是transfo
  • 如何在 Kubernetes 中设置自定义 HTTP 错误

    我想创建一个自定义 403 错误页面 目前我已经创建了一个 Ingress 并且在注释中我有这样的内容 nginx ingress kubernetes io whitelist source range 100 01 128 0 20 8
  • 带有缺失值的 dplyr 交叉表

    我想在 R 中使用dplyr 我有充分的理由不只使用底座table 命令 table mtcars cyl mtcars gear 3 4 5 4 1 8 2 6 2 4 1 8 12 0 2 library dplyr library t
  • 禁用其他网站的 iframe 嵌入

    我想禁用从我的网站到其他网站的 iframe 嵌入页面 我做了这个js 脚本有效 但我有 page01 php 和 page02 php 我想在 page01 php 源代码中插入 page02 php 的 iframe 当我这样做时 我被
  • 使用嵌套自定义对象进行 NSCoding?

    我有一系列嵌套对象 我需要将它们通过 NSCoding 协议 以便我可以将顶级对象保存到 NSUserDefaults 中 这是对象的结构 导师 班 NSMutableArray 保存 的实例 类 类 NSMutableArray 保存 的