【问题标题】:Reading Cocoa (not Cocoa Touch) archives on iPhone在 iPhone 上阅读 Cacao(不是 Cocoa Touch)档案
【发布时间】:2010-02-19 23:15:04
【问题描述】:

如果我有一个由 Cocoa 在 Mac 上使用 NSKeyedArchiver 编写的文件,在 iPhone OS 上读取它有什么技巧吗? NSKeyedArchiver 在两个平台上都存在,但 Mac 版本可能会归档一个 NSColor,而 iPhone 只能取消归档 UIColor。

有 setClassName:forClass: 但我认为这没有帮助。

我不认为真的可以转换 NSColor(或大多数其他类),但我想知道是否有一些技巧。

(我在归档 NSStrings 方面取得了成功。)

【问题讨论】:

    标签: iphone cocoa cocoa-touch


    【解决方案1】:

    由于 NSColor 等实际上并不存在于 iPhone 上,因此没有什么能阻止您创建一个 NSFoo 类,它要么是 UIFoo 的子类(如果它们的 API 兼容的话),要么在内部包装一个 UIFoo。

    【讨论】:

      【解决方案2】:

      可以让NSKeyedUnarchiver 重定向取消归档某些类名:

      [NSKeyedUnarchiver setClass:[MyColor class] forClassName:@"NSColor"]
      

      如果可能,避免在平台之间归档对象NSKeyedArchiver/NSKeyedUnarchiver 并非旨在产生交换格式。

      【讨论】:

      • 这似乎是在回避问题,除非您对 MyColor 进行大量逆向工程。考虑到我正在尝试保存系统类(在 NSText 系列中也是如此),这并不是那么容易。
      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多