|
10
|
| Rob Keniger · 技术社区 · 16 年前 |
|
|
1
25
如果我没弄错的话,你的价值转换器有一个相反的方向。我在我的应用程序中做同样的事情,使用如下代码:
虽然这是针对iPhone的,但您应该能够在适当的位置交换nsImage代码。我只是还没有测试我的Mac实现。 我所做的一切就是将Image属性设置为在数据模型中可转换,并指定转换器的名称。我不需要像在+initialize方法中那样手动注册值转换器。 |
|
|
2
3
注册变压器似乎对核心数据是否使用没有影响。 我一直在玩photolocations示例代码,删除变压器注册没有任何效果。只要ValueTransformerName是类的名称,并且Transformer的实现包含在目标中,它就可以工作。 如果变压器中没有代码执行,那么变压器中的代码是无关的。问题必须出现在核心数据栈的其他地方,或者变压器的声明中。 |
|
3
2
事实证明,这实际上是框架中的一个bug。请参阅Cocoa Dev邮件列表中苹果员工的这篇文章: http://lists.apple.com/archives/Cocoa-dev/2009/Dec/msg00979.html |
|
|
4
1
您需要在运行时显式注册转换器。 这样做的好地方是重写nsmanagedObject实体子类中的类初始化方法。如前所述,这就是所谓的核心数据错误。以下是来自苹果公司位置代码示例的关键代码,它经过测试和工作: http://developer.apple.com/library/ios/#samplecode/Locations/Introduction/Intro.html
|
|
|
5
0
如果其他地方的代码中没有明确使用pngDataValueTransformer类,则永远不会调用该类的+initialize方法。在核心数据模型中指定名称也不会触发它——它只会尝试查找该名称的值转换器,它将返回nil,因为还没有以该名称注册任何转换器实例。 如果您的情况确实如此,只需在访问数据模型之前在代码中的某个地方添加对[pngDataValueTransformer initialize]的调用,例如在使用此数据模型的任何类的+initialize方法中。这应该触发正在创建和注册的值转换器实例,以便核心数据可以在需要时访问它。 |
|
|
6
0
查看示例代码 here . 这是你想要的吗?
|
|
|
George Kim · 如何在iOS中模拟特定坐标空间中的触摸? 2 年前 |
|
|
BENG · 协调C++和Objective-C中结构的填充 2 年前 |
|
|
Community wiki · iPhone上ivar的继承问题 2 年前 |
|
|
Community wiki · 在OpenGL中显示YUV 2 年前 |
|
|
YosiFZ · pod更新依赖关系pod 2 年前 |
|
|
Community wiki · 查找iOS日历 3 年前 |