问题标签 [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.
iphone - 如何持久化和加载符合 NSCoding 协议的对象?
我创建了一个符合 NSCoding 协议的类,并完成了所有的编码和解码工作。
对于我的应用程序,我只想将该类中的一个对象持久保存到设备中,并且下次应用程序启动时,我想将该对象加载回内存中。
基本上它只是一个包含一些用户输入信息的类。例如,用户开始编写文本但随后退出应用程序。下次我想加载该数据对象。
我想我需要 NSKeyedArchiver?有这方面的好教程吗?我怎么做?
iphone - 确定文件是否遵循特定类的 NSCoding 实现的最快方法是什么?
给定:一个访问文件目录的应用程序:一些纯文本,一些遵循特定 NSCoding 实现的二进制文件,以及它可能根本不了解如何处理的其他二进制文件。
我想:能够弄清楚该目录中的哪些文件符合我的 NSCoding 类,并且我不希望不得不依赖将每个文件的全部加载到内存中,尝试取消归档的天真的方法每个。
有人对这个问题有优雅的方法或模式吗?
iphone - [iPhone]Objective C,不符合 NSCoding 的对象。如何将它们写入文件
我正在使用一个Objective c 类,它是NSObject 的一个子类。这个类不能修改。我有一个此类的实例,我希望将其写入可以检索并稍后恢复的文件。该对象不符合 NSCoding。
总而言之,我需要将一个类的实例保存到一个可以稍后检索的文件中,而不使用任何 NSCoding 方法,例如 NSKeyedArchiving encodeWithCoder ...
使用它们会返回这个... NSInvalidArgumentException ...encodeWithCoder:] 无法识别的选择器发送到实例...
有没有其他方法可以存储这个对象以供以后使用 谢谢
ps 类是一个 UIEvent
objective-c - NSCoding 和 ostream
有没有比使用 /NSKeyedArchive 更好的方法来序列化 ObjC 对象?
我需要通过 C++ std:ostream-like 对象分发对象以放在另一台计算机上。
该对象有超过 122 个不同类型的成员...
对于他们所有人...
有没有人有一个不错的 Perl 脚本至少可以写出来?我什至不知道它包含的对象是否实现,这意味着这可能会变成一个巨大的丑陋混乱,因为我无法更改对象的来源 - 我必须继承并添加@interface
它......
还是我傻? Apple 的指南对我没有帮助,因为归档到 XML 不会很好地通过 ostream。
有一个更好的方法吗?
-S!
[编辑 1]
所以我查看了 NSCoding,我的类包含NSManagedObjects
不符合<NSCoding>
. 我尝试使用 [here][2] 找到的 Aspect Oriented Programming - 但这会导致运行时无限递归。(至少这就是我假设的 104795 调用的调用堆栈[id encodeWithCoder:]
。
另外,我不能在加载时添加<NSCoding>
到类中,因为它的成员是导入框架的对象。我不能只向它添加协议,这就是为什么我认为面向方面的东西会起作用。
我的最后一个(也是可怕的)想法是对我需要的每个类进行子类化,并在那里实现协议。我可以预见的一个巨大障碍是这些类是否包含未在框架中公开的类的 NSArray。然后我沉没了。
有一个更好的方法吗?我觉得这是一个设计时的决定,现在添加此功能为时已晚。
帮助...
附言
这整个带有限制链接的反垃圾邮件很糟糕。我应该怎么问聪明的问题!?
[2]:http://davedelong.com/blog/2009/04/13/aspect-orienting-programming-objective-c#comment-803
iphone - 保存自定义对象的 NSMutableArray
我有一个自定义类,用作 NSMutableArray 的包装器
上面的数组存储了另一个自定义类的对象。
我使用下面的方法将课程对象添加到我的 AllCourses
在 AllCourses 中保存 arrClasses MutableArray 的最佳方法是什么,以便在我的应用程序加载时它可以保留用户已经输入的保存数据并填充它?
iphone - 我可以这样做吗??尝试从自身内部加载对象
我有一个符合 NSCoding 协议的对象。
该对象包含一个将自身保存到内存的方法,如下所示:
这工作得很好。但我也想初始化这个对象的一个空版本,然后调用它自己的“加载”方法将文件中存在的任何数据加载到它的变量中。所以我创建了以下内容:
现在,第二种方法无法加载任何变量。这条线是不可能的吗?
最终我想使用这样的代码:
一个 viewController 接受用户输入的输入,创建一个对象并将其保存到内存中
第二个 viewController 创建一个空对象,然后通过调用将其值初始化为存储在文件中的值:
任何关于如何完成这项工作的建议将不胜感激。谢谢 :)
迈克尔
iphone - iPhone NavigationController 堆栈的 NSCoding 序列化
编辑:我似乎找到了一些有用的东西。我保留了 ivar“堆栈”,现在它似乎正在工作
我一直在毫无问题地序列化几个自定义 NSObject 类。现在我想序列化我的 NavigationController 堆栈。每个 viewController 只需要保存几个属性即可重建导航树。我已经在 viewControllers 中实现了 NSCoding 协议,并成功地将它们编码为 NSData 并保存到磁盘。
当我尝试加载堆栈时,生成的数组具有正确数量的对象,但是当我尝试设置 viewController 数组时,我不断收到 EXC_BAD_ACCESS 错误。我只是以错误的方式解决这个问题吗?
}
objective-c - 更好地使用 NSCoder 归档 1 个大对象或几个较小的对象?
我需要归档一组不同类型的对象。每个对象都有自己的实例变量。
使用包含约 20 个存档对象的数组创建单例对象,还是使用包含所有其他对象数组的单个存档对象更好?对不起,如果这令人困惑,但我自己有点困惑。
iphone - 如何从已经存在的类创建自定义类?(现有类不支持 NSCoding)
我正在尝试做的是将一个转换EKEvent
为NSData
,然后将其转换回一个EKEvent
.
我环顾四周,注意到为了使用NSKeyedArchiver
,该类必须符合NSCoding
协议。我还发现,如果我正在创建一个自定义类,我可以通过在这样的自定义类上实现来使其符合NSCoding
协议。encodeWithCoder:
本质上,我假设为了将我的转换EKEvent
为NSData
和转换回来,我需要创建一个自定义类(让我们称之为CustomEvent
)我需要执行以下操作:
我可以在学习如何创建自定义类方面获得任何帮助,该类复制现有类,但我实现的例外是encodeWithCoder:
使其符合NSCoding
?
我正在查看 EKEvent.h,并且我知道它涉及我还必须复制的其他类(因为它们也不符合NSCoding
)。任何人都可以给我一个教程链接或帮助我吗?
提前致谢!
iphone - 使用 NSKeyedUnarchiver 解码时出现问题
我正在 XCode 3.2.3 上编写一个针对 iOS 4.0 的应用程序,当应用程序使用 NSCoder 协议关闭时,我会在其中存储一些数据。保存似乎工作正常,问题是从保存的文件中检索数据。我的保存方法如下所示:
这是我从文件中读取的方法:
奇怪的是,在从内存中读取数据并进行调试时,我看到 mwData 和 fwData 实际上不是 nil,并且彼此之间的大小比例大致正确(大约 2:1)。问题在于解码后的数组(tempMusicalWorks 和 tempFeaturedWorks)的条目为零(虽然不是 nil)。这使我相信问题实际上出在解码中。
作为记录,我还检查了项目是否保存在 saveMusicalWorksToMemory() 方法中。我通过这个方法传入的数组确实填充了一些东西。此外,我检查了我是否为正在编码和解码的对象正确实现了 initWithCoder() 和 encodeWithCoder() 方法。
有什么提示吗?我真的迷失了这个。
谢谢!
-马特