如何在 iPhone sdk 中序列化一个简单的对象?

2023-12-23

我有一本对象字典;它们都是应该可序列化的 POCO 对象。我应该采用什么技术将它们写入磁盘。我正在寻找最简单的选项来编写一些列表来保存状态。

我想我有3个选择。

  1. plist 文件。然而,这似乎仅限于仅存储预定义的对象(字符串、数字等),而不是对象(例如具有姓名和年龄的人)。

  2. 核心数据。 (3.0 中的新增功能)这会很好用;但是我的数据模型需要改变才能使这项工作起作用。这将是一次大规模的返工,我不确定是否值得付出努力。

  3. SQLite。实现一个简单的 SQL 数据库来读取和读取。我对此进行了最少的研究,但我不想“重写”一些核心数据 ORM 函数。


要序列化自定义对象,您只需要符合NSCoding协议。如果你的对象扩展了 NSObject,你需要做的就是(我相信)实现这些(例如 person 对象):

// Encode an object for an archive
- (void)encodeWithCoder:(NSCoder *)coder
{
    [super encodeWithCoder:coder];
    [coder encodeObject:name forKey:@“Name”];
    [coder encodeInteger:age forKey:@“Age”];
}
// Decode an object from an archive
- (id)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    name = [[coder decodeObjectForKey:@“Name”] retain];
    age  = [coder decodeIntegerForKey:@“Age”];
}

NSArray and NSDictionary已经实现了序列化方法。它们将序列化它们所持有的所有对象(如果对象实现 NSCoder 接口 - 如果它们扩展 NSObject,则它们会序列化)。 NSObject 的encodeWithCoder and initWithCoder默认情况下不执行任何操作,因此除非您在类中实现自己的代码,否则不会序列化任何内容。

如果你有 NSArray 或 NSDictionary 对象,你可以使用以下方法同步它们:

// Writing
- (BOOL)writeToFile:(NSString *)aPath atomically:(BOOL)flag;
- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag;
// Reading
- (id)initWithContentsOfFile:(NSString *)aPath;
- (id)initWithContentsOfURL:(NSURL *)aURL;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 iPhone sdk 中序列化一个简单的对象? 的相关文章

  • 使用 Mono Touch 的 Iphone 键盘顶部带有完成按钮的工具栏?

    我需要使用 UIkeyboard type 数字键盘在工具栏上添加完成按钮 以便在单击完成按钮时退出键盘 我使用了输入附件视图 但它也添加到普通键盘 我需要在我有数字键盘的地方添加这个 例如 我有一个文本字段 它只需要我需要的数字 除了我不
  • iPhone 上的最大蓝牙连接数是多少?

    如果您对此有任何见解 那么了解连接之间是否存在很大的延迟也会很高兴 蓝牙协议规定连接是点对点的 因此称为 配对 但不同的站可以同时使用不同的配置文件 每个配置文件一次仅支持一个连接 您可以同时与汽车建立立体声耳机连接并与笔记本电脑建立数据连
  • MKMapView 中显示多个注释标注

    是否可以同时打开多个标注 代码 void mapViewDidFinishLoadingMap MKMapView theMapView for id
  • Monotouch 和本机 iOS 代码

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

    基本上 我有一个 46 个字符的 NSString 我将其转换为 NSData 我需要将字符串填充到 48 个字符 仅在 NSString 末尾添加 是行不通的 所以 我只是使用以下方法增加了 NSData 的长度 NSString str
  • 如何使导航栏透明并淡出,就像 iPhone 中的照片应用程序一样

    我是 iPhone 编程新手 有人可以帮我吗 我想在iPhone中开发一个类似照片应用程序的应用程序 如何使导航栏和工具栏透明并淡出 就像 iPhone 中的照片应用程序一样 感谢你 UINavigationBar继承自UIView 所以你
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 应用程序发布后,对如何更新 UITableView 上的数据源感到困惑

    阅读文档后 我似乎误解了有关数据管理的一些概念 所以我试图澄清一些方面 如果这篇文章听起来多余和重复 请道歉 我的应用程序有多个 TableView 每个表视图都有一个 pList 形式的数据源 因此 我有几个属性列表用作我的表的数据源 目
  • 获取 Cocoa 中文件的类型

    我成功找到了指定文件的扩展文件类型 JPEG 图像 TIFF 图像等 但我正在寻找更通用的东西 可以对 大类别 中的文件进行分类 如图像 moovies 文本文件等 有没有办法在可可 或 Objective C 中实现这一点 感谢您的帮助
  • 如何使用 iPhone SDK 加快或减慢背景音乐曲目的速度?

    是否有一种简单的方法来控制使用音频队列服务播放的声音文件循环的播放速度 节奏 例如 如果游戏正在播放背景音乐 我想让BGM随着时间的流逝而加快 但不改变音乐的音调 谢谢 据我所知 没有什么简单的方法可以做到这一点 在 Mac 上 您可能会使
  • activeProcessorCount 和processorCount 之间有什么区别?

    The NSProcessInfo类有两个名为processorCount and activeProcessorCount 该文档对于处理核心和活动处理核心之间的区别尽可能没有帮助 或者 换句话说 什么才算是一个inactive可可的处理
  • 删除部分(红色删除按钮),UITableViewController - iOS

    我正在尝试做一个分组的 uitableview 并且我已经激活了编辑选项 我希望用户也能够删除整个部分 而不仅仅是特定行 因此 当您单击 编辑 时 每个表格单元格左侧显示的红色减号按钮也应该显示在各个部分 部分标题左侧 有人知道如何做到这一
  • 自定义 UISearchDisplayController

    替代文本 http img210 imageshack us img210 5992 searchdisplaycontroller png http img210 imageshack us img210 5992 searchdispl
  • 如何捕获反序列化异常?

    PHP 是否可以在以下情况下捕获异常 unserialize 产生错误 一个简单的方法是 ret unserialize foo if ret null Error case 但这不是最现代的解决方案 最好的方法是像前面提到的那样有一个自定
  • 无法使用 NSDateFormatter 解析日期

    我正在获取 RSS 其中我收到以下日期戳 2010 05 10T06 11 14 000Z 现在我正在使用 NSDateFormatter 来解析这个日期时间戳 parseFormatter setDateFormat yyyy MM dT
  • AVAssetExportSession 输出文件

    AVAssetExportSession 输出文件应该是什么样子 我正在尝试压缩 ALAsset 项目中的视频 但它不起作用 我猜输出文件与它有关 这是我正在使用的代码 NSString destinationPath NSHomeDire
  • 有没有办法在 xcode 上使用 c++0x ?我想使用 gcc 4.4 或更高版本

    我想使用 gcc 4 4 或更高版本进行 iphone 开发 有人知道怎么做吗 不 你不知道 相信我 你不会 Apple 仍保留 gcc 4 2 1 因为 4 2 2 及更高版本使用 GPLv3 这意味着他们必须放弃对其平台的控制 对于 i
  • iOS 中的词干 - 不适用于单个单词

    我在用NSLinguisticTagger用于词干提取 我能够获得句子中单词的词干 但无法获得单个单词的词干 以下是我正在使用的代码 NSString stmnt i waited NSLinguisticTaggerOptions opt
  • 如何确定 UINavigationController 中工具栏的高度?

    我有一个带有由 UINavigationController 呈现的工具栏的视图 当我处理 UIKeyboardWillShowNotification 时 我将整个屏幕向上滚动键盘的高度 问题是当显示键盘时 底部工具栏不显示 所以我只需将
  • iPhone 上的锁定方向 UIWebView

    有没有办法锁定 UIWebView 的方向 使用 Obj C JS 还是 Html 我不想有按钮或任何东西 我只想在应用程序打开时将其锁定为纵向 好像这个堆栈溢出帖子 https stackoverflow com questions 43

随机推荐

  • jsf隐式对象cc和组件之间的区别

    也许这是一个愚蠢的问题 但我用 cc 引用复合组件 例如 cc attrs randomAttr 但我也看到了 component 隐式对象 我使用它是因为我被告知要这样做 但我不太明白它的用途 谁能解释一下吗 cc指评估时正在处理的顶级复
  • 在没有内置函数的情况下按降序排列文件中的元素

    我按照冒泡排序重新编写了程序 def main try array file open input Please enter the name of the file you wish to open A file read split f
  • SASS 和 SCSS 变量名称的合法字符

    SCSS 变量名称中可以使用哪些字符 如果你查看源代码SASS 词法分析器 https github com nex3 sass blob stable lib sass script lexer rb 你会看到的 A hash of re
  • 有没有办法检测 NaN 和 -NaN?

    我想将 lua 数字保存到字符串和句柄中NaN大小写正确 检测任何 NaN 都很容易 x x 然而 我发现只有一种检测方法是NaN or NaN是使用tostring x nan 有更好的方法吗 代替tostring x nan 不方便携带
  • Swift Calendar.当前内存泄漏?

    我在应用程序中遇到了内存问题 我已经能够将其分解为 NSCalendar 一个简单的视图控制器如下所示 class ViewController UIViewController override func viewDidLoad supe
  • 使用输入元素上的修饰键触发单击事件

    我正在为某些功能编写测试 其中涉及用户按住 Shift 键并单击复选框 我在用着 input trigger Event click shiftKey true 来模拟那个 但是当事件监听器被调用时 event shiftKey财产总是被报
  • 如何使用 javascript (jquery) 将整数值添加到返回字符串的值?

    我有一个简单的 html 块 例如 span 8 span 我尝试使用 jquery 将 1 添加到值 8 var currentValue replies text var newValue currentValue 1 replies
  • Win32 命名管道和消息大小限制 - 旧的 64K 限制是否仍然适用?

    Win32 过去对消息模式管道的消息大小限制为 64K 正如 KB 文章的残余所证明的那样Q119218 PRB 命名管道 Write 限制为 64K https support microsoft com en us kb 119218
  • BeautifulSoup:如何显示不显示的div的内部?

    我是 BeautifulSoup 的新手 我有一些我不明白的问题 我认为这个问题可能已经得到解答 但我找到的答案在这种情况下都没有帮助我 我需要访问 div 的内部来检索网站的词汇表条目 但是该 div 的内部似乎根本 不显示 在 Beau
  • 如何在Powershell中比较关联数组?

    我有两个关联数组 a k1 v1 k2 k21 v21 b k1 v1 k2 k21 v21 我想知道有没有什么好的方法可以在不编写自己的函数的情况下进行比较 除了编写一个函数来比较每个键的值之外 我不知道有什么方法 如果该值不是原始对象
  • Scrapy XPath 页面上的所有链接

    我正在尝试使用 Scrapy 收集某个域下的所有 URL 我试图使用 CrawlSpider 从主页开始抓取他们的网络 对于每个页面 我想使用 Xpath 提取所有的 href 并以键值对等格式存储数据 键 当前Url 值 该页面上的所有链
  • 将 netbean 升级到 JEE 8

    我的问题很简单 如何升级 Netbeans 8 2 以使用 Java EE 8 我已经安装了普通的 NB 8 2 和 glassfish 5 Java 1 8 并尝试使用 java 9 我已经安装了通过NB控制的GF 5服务器 当我创建新的
  • 服务器选择超时错误 Pymongo

    我第一次尝试 pymongo 但不断收到 ServerSelectionTimeoutError 使用 mongo 命令行登录时 我运行命令如下 mongo 3 0 ssl test net 27080 db qa sslAllowInva
  • 有没有办法将进程的标准输出发送到 SLF4J?

    我本质上是在做以下事情 Process process new ProcessBuilder command start InputStream stdout process getInputStream LoggerFactory get
  • 使用 JQL 过滤特定用户在一段时间内更新的问题

    有没有办法使用 JQL 查找特定用户在每天特定时间段更新的所有问题 或者是否有任何插件可以解决这个问题 如果更新意味着状态改变 你可以检查如下内容 status changed by user name and updated gt sta
  • 保存 JSON 数据以供多个 UIView 使用时出现问题 [重复]

    这个问题在这里已经有答案了 我在访问已拉入的 JSON 数据时遇到了一些问题 我正在使用 JSONModel 来获取 JSON 数据 如下所示 在我的左侧 ViewController m 的顶部 interface LeftViewCon
  • 我的滑块无法在自动模式下工作

    我创建了简单的滑块手风琴 这是我的代码 唯一的问题是它适用于自动模式 并且适用 我的代码
  • *ng如果不工作

    我在用角 2 RC 4和 ngIf 在这里不起作用是视图的代码 View div class navbar navbar inverse navbar fixed top div class container div class navb
  • 两个 Azure 移动服务(.NET 后端)共享同一数据库

    我有两个共享同一个 Azure 数据库的 Azure 移动服务 NET 后端 假设服务 X 和 Y 该数据库由服务 X 首次运行时 创建 并创建了模式名称 X 的表 TA 然后我运行服务 Y 它在同一数据库中创建了相同的表 TA 和 TB
  • 如何在 iPhone sdk 中序列化一个简单的对象?

    我有一本对象字典 它们都是应该可序列化的 POCO 对象 我应该采用什么技术将它们写入磁盘 我正在寻找最简单的选项来编写一些列表来保存状态 我想我有3个选择 plist 文件 然而 这似乎仅限于仅存储预定义的对象 字符串 数字等 而不是对象