问题标签 [nscoding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
646 浏览

iphone - 从 NSKeyedUnarchiver 返回的对象的 exc_bad_access

我无法从保存的数据加载符合 NSCoding 协议的自定义类的实例。我的类有一个 UIImage 属性,当我为它分配一个新的 UIImage 时,程序会因 exc_bad_access 而崩溃。

在视图控制器中,我像这样声明我的对象:

然后在 .m 文件中使用如下:

到目前为止,一切都很好。但后来我选择了一个新图像并尝试将其设置为 myObject 的“图像”属性,这会引发 exc_bad_access

据我从单步执行代码中可以看出,这是导致 exc_bad_access 的最后一行。我究竟做错了什么?

0 投票
2 回答
683 浏览

iphone - 重新打开 iphone 应用程序时保存 NSMutableArray 以加载

我有一个 NSMutableArray,这个数组中的每个项目都是不同的类。在每个类中都有许多字段,例如 CPPlot、标识符、...(我正在使用 CorePlot 开发股票应用程序)。现在我想存储这个 NSMutableArray 以在用户重新打开应用程序时加载,这将加载他们之前使用的所有图表。

我试图弄清楚如何在 Stackoverflow 中做到这一点。我发现有两种解决方案:

NSUserDefaults

SQLite 数据库

  1. 在 NSUserDefaults 中,当我想存储 NSMutableArray 时,我必须使用 NSKeyedArchiver 来实现对数组对象的归档和取消归档,还要对数组对象中的每个项目执行 NSCoding 协议。但我不能做这个解决方案,因为在每个项目中,它都有一些来自 CorePlot 库的字段,所以我不能对这些字段使用 NSCoding。

  2. SQLite 数据库,我不能使用这个解决方案,因为数组对象中的每个项目都是不同的类。

我想问一下是否有其他解决方案可以解决这个问题?

我希望我的话足够清楚,可以理解。

谢谢

0 投票
1 回答
2048 浏览

objective-c - setValuesForKeysWithDictionary 可以与嵌套字典一起使用吗

所以我有一个 NSDictionary ,其中一个键是字典数组。我映射到的类具有匹配的键名和设置器。setValuesForKeysWithDictionary 可以为我填写子词典吗?当我尝试它时,它似乎用指针垃圾或其他东西填充了对象,但我是一个新手,所以也许我做错了什么。那个功能是这样工作的吗?

0 投票
2 回答
1150 浏览

objective-c - initWithCoder 的 NSCoding 泄漏问题

我在以下代码中有泄漏:

泄漏出现在该行设备上的仪器中:

KEY_TITEL 是:

和 self.Titel 是:

它被合成并在 dealloc 中释放。

我不知道泄漏是从哪里来的。你能帮帮我吗...

谢谢xz

0 投票
1 回答
276 浏览

objective-c - .pbxproj 格式使用哪个 NSCoder?

在 .xcodeproj 包中,主要项目数据实际上存储在 .pbxproj 文件中。很明显这是一个存档字典,但我一直没能找到 Apple 使用了哪个编码器?它是 的自定义子类NSCoder,还是记录在案并且我看起来不够努力?

0 投票
3 回答
3339 浏览

ios - 包含自定义对象的 NSMutableDictionaries 的 NSCoding

我试图序列化一个包含一组类型(自定义对象)的SearchEntity对象(自定义对象)。NSMutableDictionaryCategoryEntity

1SearchEntity<NSCoding>包含:1 个NSMutableDictionary(参数)参数,其中CategoryEntities<NSCoding>包含仅包含字符串和数字的 X。

在 SearchEntity encodeWithCoder" 的这一行[encoder encodeObject:parameters forKey:kPreviousSearchEntityKey];中,我每次都得到 GDB:Interrupted,没有错误消息、异常等。只是 GDB:Interrupted。

这是实现SearchEntity,参数是NSMutableDictionary

还实现了 NSCoding 协议,CategoryEntity如下所示:

我尝试从 NSUserDefaults 的包装器中对其进行编码,如下所示:

我在想,当我要求序列化 SearchEntity 时,它会开始序列化“参数” mutableDictionary 对象,NSCoder 将对字典中包含的 CategoryEntities 调用“encode”,它们都会以正确的编码对象响应。

但是我只是在控制台底部得到 GDB:Interrupted 。

我该如何调试呢?

我的方法错了吗,我应该在 NSData 中包装所有级别的编码吗?

附言。ResultEntity我对包含的 NSArrays做了完全相同的事情CategoryEntities,它编码没有问题,所以我猜 NSMutableDictionary 是唯一突出的东西。

0 投票
1 回答
1464 浏览

objective-c - 使用 NSCoding 编码对象或简单地将数据写入文件的优缺点

我很好奇使用 NSCoding 在目标 c 中编码对象并将它们写入磁盘的优势可能超过简单地将持久性对象写入磁盘。在 I/O 或磁盘空间使用方面是否有性能提升?

0 投票
1 回答
224 浏览

iphone - 为什么我的只有一个属性对象被正确写入文件?

因此,当我的应用程序终止时,我尝试将自定义对象的 NSMutableArray(代表 Course Planner 应用程序的大学课程的“课程”)写入文件,然后将该数组从文件中读取到将使用的相关 ViewController应用程序启动时的数据。

以下是相关代码:

课程AppDelegate.m:

课程.h:

课程.m:

[coursesViewController courses] 是保存课程对象的 NSMutableArray。我知道它拥有有效数据这一事实。

所以问题是,1:只有当我从 xcode 运行应用程序时,应用程序才会保存到 data.plist(即在 xcode 中单击“编译并运行”)。2:它从 plist 加载数据,但保存的只是课程名称以及成绩和总权重的默认值(分别为 -1 和 0)。所以实际上它们被保存,就好像 initWithName 被首先调用它们一样。

这是我第一次真正深入研究一个相当高级的 iOS 应用程序,所以作为一个新手,我可能遗漏了一些重要信息。如果是这种情况,请告诉我,我会更新问题。

谢谢!-H T

ps 如果相关,我将 info.plist 中的 doNotRunInBackground 设置为 true。

0 投票
5 回答
2164 浏览

objective-c - 是否可以在 Objective-C 中将自定义对象序列化为 plist 文件?

为了简单起见,假设我们有以下简单的类接口:

是否可以将此对象序列化为 plist(假设正确实现了 NSCoding 协议)?

更新 2010 年 12 月 31 日 14:40

我对此有一些后续问题。是否可以NSKeyedArchiver将 plist 导出为 XML?此外,是否可以将 XML 转储到变量而不是文件中?

0 投票
2 回答
2805 浏览

objective-c - Cocoa Interface Builder 对象初始化

根据我浏览过的文档和示例代码,我的印象是,当将 xcode 中定义的类读入并在 Interface Builder 中配置时,会有效地创建基于该类的对象并将其存储在 xib 或 nib 文件中. 因此,当启动相应的应用程序时,该对象就可以使用了。

或者,对于尚未由 Interface Builder 处理的类,必须在 xcode 中显式编写诸如“new”语句之类的代码,以便创建和使用关联的对象。

有比我知识渊博的人来确认或纠正我对 Interface Builder 非常幼稚的理解会非常好......