问题标签 [nscoder]
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.
objective-c - ColorWell for Colored "Category"
I have an NSTextField
, an NSTableView
with a column "category", an NSColorWell
, and a custom array controller.
The NSTextField
and the column "category" from the NSTextField
are bound to the array controller so that everything I write in the text field shows up in this column.
The problem I have is the following:
I want the the string in the "category" column to get the color of the NSColorWell
when the user chooses a color. All that works fine, but when I open the app a second time and I create a second entry, then the color of the string in the "category" column goes back to the first color it had before the user chose a color.
The way I'm trying this at the moment:
AppDelegate.h :
AppDelegate.m :
ToDoItem.h :
ToDoItem.m :
I hope my code will help you to understand my problem and to get this working.
I look forward to hearing from you. Thanks.
objective-c - 解压缩使用 encodeRootObject: 归档的内容的正确方法是什么?
我第一次尝试使用 Keyed Archiver 类,但在这个简单的测试(OCUnit)中我的最后一个断言失败了:
我已经确认存档器正在存档,我假设问题存在于取消存档中。根据存档和序列化指南,我认为我使用 Unarchiver 的方式可能存在一些问题?
谢谢!
iphone - 如何将 NSMutableArray(包含其他数组)保存到文件
以前有人问过这个问题,人们就如何做到这一点给出了很好的指导,例如这里。
但是,我想知道如果我只是想将一个 NSMutableArray(包含另一个 NSMutableArray 的各种实例)保存到文件中,是否真的需要使用 NSCoder?我试过了,但只收到一条错误消息:
我的错误信息:
所以我想我必须使用 NSCoder,对吧?如果是这样,我想知道如何去做。人们已经解释了如何用一个类来做到这一点,但就我而言,我有一个 NSMutableArray (myLibrary),它包含一个类的各种实例。我必须在这个类和 NSMutableArray 中实现 NSCoder 吗?
我像这样分配我的图书馆:
然后像这样添加一个名为 NoteBook.m 的类的实例:
那么我到底应该把 NSCoder 命令放在哪里呢?只进入我的 NoteBook.m 课程?这会自动处理 myLibrary 吗?
感谢您的任何建议。
编辑:
所以我更新了我的代码,但我想最大的问题是我的 NSMutableArray myLibrary 包含我设置的自定义类的几个实例(称为笔记本)。我已经为这个类(及其所有变量)设置了 NSCoding,以便我可以保存并加载它。
现在,如果我在应用程序中创建 NSMutableArray(即当应用程序第一次启动时,不存在文件),而不是从磁盘加载它,我的应用程序可以正常工作:
如果我从磁盘加载它,它也可以正常工作:
如果我在加载后记录库中包含的所有内容,那么一切都很好。例如,以下工作完全正常:
然而,最大的问题是,如果任何其他方法试图访问 myLibrary。例如,如果我从另一个方法调用相同的日志命令,应用程序将崩溃并且我收到以下错误消息:
这听起来好像 myLibrary 以某种方式被释放了,但我不明白为什么。这怎么可能发生?我觉得我在我的 NSCoding 设置中做错了什么......因为如果我只是在代码中创建 myLibrary,那么一切都会非常好。只有当我从磁盘加载它时,应用程序才会崩溃。
这是班级设置:
编辑:
我想我已经解决了......我忘记了一个小“自我”......这一切都搞砸了并释放了 myLibrary:
iphone - NSUserDefaults、NSCoder、自定义类 - iPhone 应用问题
我有一个错误,我想我在下面的过程中做错了什么。首先,我有一个班级联系人:
在 Contact 的实现中,我有:
当我在我的应用程序中创建我所谓的“组”时,我会执行以下操作:
根据我所做的一些打印声明,这似乎工作正常。
然后,当应用程序启动时,我尝试打印我存储的那些对象:
但是,在 NSLog(@"got contact %@",c); 行上,我的程序停止运行。它打印一切都很好,甚至打印出对象的类是“联系人”。但随后它停止了。看起来可能有错误,但在左侧,我只在左侧错误区域的 XCode 4 中的“按线程”选项下看到问号。
那么我做错了什么?
c# - 在 C#/.NET 中从 Apple/Objective-C 读取持久数据
是否有C#/.NET 库或其他现有代码可以从 Apple 的序列化 API 读取持久数据,即NSKeyedArchiver, NSKeyedUnarchiver, NSCoder
?
背景:我的一个朋友为一些 Apple 设备创建了一个很酷的应用程序。我有一个适用于 Microsoft 世界的类似应用程序,并且想导入他的文档。数据位于包含所有必要内容的单个文件中。该文件是使用上述 Apple API 创建的。
在 C# 中读取 Apple 数据的最简单方法是什么?
谢谢,马塞尔
objective-c - Objective-C struct 属性指针不能通过 self.prop 生成?
在将 NSCoder 支持写入一个类时,我刚刚遇到了一个小惊喜。我有一个 A 类,其中包含 rgb 结构类型的公开“颜色”属性。我有另一个扩展 A 的 B 类。
为了在 B 类的 encodeWithCoder 方法中对颜色属性进行编码,我首先将它包装到一个 NSValue 中,如下所示:
但是,使用此代码会导致以下编译错误:
在使用 NSValue 包装之前,只需将 self.color 复制到方法范围值就很容易解决,但我想了解何时发生这种情况的规则,以及发生这种情况的原因。由于不需要该属性名称的真实类字段存在,因此任何@synthesize 属性都会发生这种情况,因此没有保证指向的对象?
objective-c - NSCoder 和/或 NSKeyedUnarchiver 如何处理同一对象的多个解码?
我想知道NSCoder
下次解码时如何处理由多个对象共享和编码的对象。它会复制该对象的两个副本,还是将一个对象解码并在解码它的所有其他对象之间共享?
我在下面提供了一个类似这种情况的小例子。
例子:
- 应用程序启动
- 对象 A 和对象 B 将对象 C 设置为它们的委托
- 应用程序收到终止通知。
- 对象 A 和对象 B对它们自己和它们的所有对象(包括它们的委托)进行编码
- 应用程序关闭并重新启动
- 对象 A 和对象 B解码自己和它们的所有对象(包括它们的委托)
在第 6 步之后,对象 A 和对象 B 会共享相同的解码对象,还是它们各自拥有自己的副本?
iphone - 取消引用 NSCoder 的 decodeBytesForKey 返回的指针时,iOS 设备崩溃
在使用 Apple LLVM Compiler 3.0 并使用 -O3 编译时,我发现了一个不寻常的 NSCoder 崩溃程序。它只会在设备上崩溃。我测试了运行 iOS 5 的 iPhone 4、运行 iOS 5 的 iPad 2 和运行 iOS 4 的 iPad 1。所有崩溃都相同。这是代码的相关部分:
BBPointI32 是这样的:
取消引用EXC_BAD_ACCESS
时会发生这种情况。data
这不是空指针问题。如果我附加 GDB,我可以看到长度为 8,sizeof(BBPointI) 也是 8,并且数据是正确的。
如果我查看反汇编,崩溃发生在:
看起来不错。r0 包含 0xb546e,即data
. 当我检查该内存时,我可以看到它包含我期望的数据。对于任何感兴趣的人,r2 包含 72(不确定那是什么),而 r3 包含 8(很可能是 的值length
)。
任何人都可以对这个问题有所了解吗?
iphone - 如何初始化具有 initWithCoder: 方法的视图
我有一个用以下方式初始化的视图 -(id)initWithCoder:(NSCoder *)aDecoder
如何在 中初始化此视图viewController
?
我想viewController
如果我想autoRotate
使用设备查看视图,我需要。我不确定,也许我可以在autoRotation
没有viewController
?
向视图添加观察者shouldAutorotateToInterfaceOrientation:
并不会自动旋转视图。但是当我也添加
我在控制台窗口中获得了方向值。
任何帮助将不胜感激。
objective-c - 当子类化 NSCoder 时,我是否还需要子类化集合类(即:NSArray、NSDictionary)?
我正在探索子类化NSCoder
以读取/写入专有文件格式的想法。我开始相信这可能还需要我进行子类化NSArray
并NSDictionary
覆盖encodeWithCoder:
以确保它们被正确编码:
我不愿意这样做,因为NSCoder
它的相关协议NSCoding
应该是自给自足的......要求遵循协议的子类化似乎是糟糕的设计。我是误会还是想多了?!?
详细说明:
例如,如果文件格式规定项目列表编码如下:
我想要编码一个数组,它encodeWithCoder:
需要看起来像这样:
因为我忽略了 NSArray 的encodeWithCoder:
实现方式,所以我想我必须重写它才能正确使用我的 NSCoder 类。