问题标签 [nsvaluetransformer]

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 回答
34611 浏览

ios - 我可以在 iPhone 上的 Core Data 中使用 Transformable 属性类型做什么?

属性有这种 Transformable 数据类型。到底有什么好处呢?有好的例子吗?

我想玩这个。所以在搜索了一段时间后,我发现了这个:NSValueTransformer。似乎是我需要的东西。

那么我该如何开始呢?例如,如果我想存储一个 UIColor 对象,我会为此制作一个转换器吗?

这东西究竟是从什么转变而来的?一个NSData?我传递给转换器的对象必须遵循任何协议吗?

0 投票
1 回答
4601 浏览

objective-c - 使用 NSValueTransformer 设置 NSManagedObject 实例的值

我正在使用自定义 NSValueTransformer 将颜色信息存储在我的核心数据存储中。一旦颜色数据已经在商店中(即一旦应用程序已经运行并退出一次),Transformable 数据和 UIColor 实例之间的转换就会很好地工作。但是,当我第一次运行应用程序并加载这些值(来自文本文件)时,它们“卡住”为 NSCFStrings。

在这行代码中,“属性”是一个字典,其键是 NSManagedObject 属性名称和值,它们是这些属性的预期值。在我的颜色示例中,键值对是 "color":"1,1,1,0.5"

“颜色”的值现在将在此实例中保留为字符串,直到它通过我的 NSValueTransformer 进行转换,然后在应用程序再次运行时重新转换为 UIColor。

我可以在这里进行与在 NSValueTransformer 中所做的相同的转换,但这是在我编写的实用程序类中,理论上可以用于任何转换器。我还想找到一种方法将所有新创建的 NSManagedObject 实例从内存中取出,从而迫使转换通过,但这似乎是一种 hack。

注意:这个“hack”对我有用,让我继续,但仍然觉得难看。如果您遇到类似问题/正在寻找“正常工作”的解决方案,请使用 NSManagedObjectContext 的重置方法。

有任何想法吗?

(我有一种预感,这类似于“为什么我的可转换核心数据属性不使用我的自定义 NSValueTransformer? ”但在标题之外我们的问题似乎有所不同)

这是我的 NSValueTransformer

0 投票
1 回答
684 浏览

ios - 将 UIImage 保存到核心数据中;NSValueTransformers 的问题

我正在尝试将从 iphone 相机拍摄的照片保存到核心数据。

我有从相机拍摄的 UIImage 。在那之后,我不知道我应该做什么。

每张图片都与一个问题实体相关联。现在问题实体没有图像字段。它与 Image 实体有关系。这样每个问题都可以有许多与之关联的 UIImages。

所以我创建了一个问题实体。现在如何将 UIImage 保存到 Image 实体中的核心数据中,以及如何将它与问题实体连接起来?我需要创建一个图像实体吗?我创建了一个 ImageToDataTransformer,但我不知道是谁调用它——核心数据还是我?在我的 xcdatamodel 中,我有一个 Image 实体。我把 ImageToDataTransformer 放在那里。

我知道我应该将 URL 存储到 UIImage,但我想了解如何存储图像。这对我来说似乎有点令人困惑。

谢谢

0 投票
1 回答
883 浏览

objective-c - CoreData 整数属性上 NSPopupButton 的 NSValueTransformer

我有一个带有 NSPopupButton 的 CoreData/SQLite 应用程序,它显示了某些实体属性(整数)的可能值。它会自动显示数据库中的属性值。用户必须能够分配另一个值,以便我的代码在启动时生成一个包含所有可能值的数组。在我的 XIB 中,我有一个用于按钮的 NSObject 和一个用于可能值的 NSArrayController。绑定完成,一切正常。

当然,只使用数字对用户来说并不清楚,所以我创建了一个值转换器来用弹出按钮上的单词替换数字:1=>Red, 2=>Green, 3=>Blue。

问题是只有选定的 Popup 项被一个单词替换。当我使用弹出按钮选择另一个值来修改实体属性时,它不会保存它。我通过在 TableView 中选择另一个对象然后返回修改后的对象来查看它,弹出窗口将指示 NoValue。

我不明白为什么。谢谢您的帮助。

这是头文件“ColorOption.h”的代码:

下面是实现文件“ColorOption.m”的代码:

0 投票
1 回答
890 浏览

xcode - XCode 4.2:Core Data 属性类型“Transformable”的“Value Transformer Name”去哪儿了?

我正在创建一个NSValueTransformer子类来将一个转换UIImage为/从一个转换NSData为允许插入/检索到/从核心数据 SQLite 数据库。但是,在TransformableXcode 4.2 集成的数据模型编辑器中选择属性类型后,没有Value Transformer Name属性可以指定应该使用哪个转换器类。

有谁知道这个转移到哪里了?它存在于早期版本的 Xcode 中。

非常感谢!

0 投票
1 回答
322 浏览

cocoa - 通过绑定和值转换器在视图(NSTableColumn)中显示一对多关系

我有一个实体标签(在核心数据中),它有一些属性和一个名为“别名”的一对多关系。

我的 ArrayController 在 Xcode 中“绑定”到:

它适用于所有属性,其他列显示正确的值。

在一个专栏中,我尝试“显示”这种多对多关系。如果我天真地这样做并将我的 NSTableColumn 的值绑定到我的 ArrayController.arrangedObjects.aliases (就像所有其他属性一样),我会在屏幕上看到这个:

()、名称别名、isOptional 1、isTransient 0、实体标记、renamingIdentifier 别名、验证谓词 ()、警告 ()、versionHashModifier (null)、目标实体 TagAlias、inverseRelationship 标记、minCount 0、maxCount 0 on 0x10053db10 的关系错误

它似乎是某种关系的 CoreData 代理......

然后我构建了一个 NSValueTransformer 的子类:

并尝试将其用作绑定中的值转换器。但我在我的实现中迷失了:

在方法transformedValue: 中,值属于“_NSFaultingMutableSet”类,我不知道如何获取别名的集合/数组或任何有用的东西。

目标是构建每个别名连接的 NSString。就像是:

aTag : 别名 1 别名 2 别名 3 ...

0 投票
0 回答
182 浏览

cocoa - 使用 NSValueTransformer 进行查询

1.在我的应用程序中,需要在表格列的每一行中显示某个值(在3个不同的值中),每行显示的值可以通过检查两个不同模型键路径的值来确定。

我尝试使用绑定来实现,其中我使用了“显示模式 Value1 与一个键路径和自定义值转换器类”和“显示模式 Value2 与其他键路径和相同值转换器”。但我没有从变压器类。谁能帮我解决这个问题。

2.在另一个应用程序中有一个3列的表格视图,其中第一列显示完整的单词,第二列显示该单词的前缀,第三列显示该单词的后缀。

我使用绑定和两个自定义值转换器类实现了这个要求。一个用于获取单词的前缀(prefixExtractor),另一个用于获取单词的后缀(suffixExtractor)。谁能建议我如何仅使用一个自定义值转换器类,以便优化我的代码。

提前致谢。

0 投票
1 回答
1856 浏览

iphone - 图像的核心数据可转换属性的问题

我坚持应该做一件非常简单的事情:让核心数据实体存储/显示(通过绑定)分配为可转换属性的图像。

我已经阅读了有关 Stack 的许多相关帖子(例如,请参阅此处此处),但在开发示例代码并研究其他文章(例如,参阅此处和此处)之后,我仍然遇到问题。这与我之前的问题有关,我还没有解决。

我创建了一个简单的基于文档的 Core Data App 来演示这个问题。Core Data 托管对象称为“TheEntity”,属性称为“theImageAtt”。Core Data 中定义的实体如下图所示(ImageValueTransformer 是 NSValueTransformer):
在此处输入图像描述

我让 XCode 生成 NSManagedObject 子类头文件和实现文件(我省略了“name”属性的代码以使其更简单):

下面是我的“ImageValueTransformer”的头文件和实现文件。Stack 和其他地方有很多这样的例子(tiff rep 是任意的)。

Value Transformer 可以通过在 MyDocument.m 中分配它的一个实例来初始化/注册,但最后,只要将 Transformer 标头导入到 theEntity 标头中(见上文),这并不重要。我已经对此进行了实验,但它并没有消除我在下面遇到的错误。作为参考,之前有关于价值转换器是否需要注册的讨论(参见 CornPuff 和 Brian Webster 的评论)。

回到手头的问题,Apple 的一个很好的代码示例在这里显示了值转换器的替代初始化,我也尝试了该设置。

将其付诸实践,我有一种方法可以加载测试图像并将其分配给 MyDocument.m 中的可转换属性(来自 NSTable 中的选定实体实例):

在代码中断的地方归零,下面的行:

给出错误:

如果我注释掉上面所说的行,那么我的 NSTable 填充得很好(所以绑定和数组控制器看起来不错),但当然 NSImageView 中没有图像。

作为检查,图像转换器中使用的转换代码按预期工作(这与值转换器分开测试):

我在这方面缺少什么?

0 投票
2 回答
859 浏览

iphone - CoreData 在返回数组时需要一个字符串,在返回一个字符串时需要 NSData

我有一个简单NSValueTransformer的应该将逗号分隔的字符串first, second, third转换为数组的方法。所以在我的 CoreData 模式中,我有options我设置Transformed并指定我的 Transformer 的属性。

这是我的变压器:

现在,当我返回变量时,result我收到以下错误(length看起来像是期待一个NSString):

如果我返回上面的测试字符串,则会收到此错误(bytes看起来它需要一个NSData对象):

看起来有一个我似乎没有掌握的概念问题。也很奇怪+(Class)transformedValueClass+(BOOL)allowsReverseTransformation在使用调试器时永远不会“触动”。

0 投票
1 回答
565 浏览

objective-c - Cocoa:我需要初始化值转换器以在 IB 中使用吗?

我的“其他来源”文件夹中包含两个自定义值转换器,绑定到 IB 中的表列,因此我对其进行了初始化:

}

这些在 IB 中工作正常,列绑定到排列对象、模型键路径、值转换器。

我的问题是,我刚刚编写了第三个转换器,但没有以任何方式对其进行初始化,我只有一个文件 MyThirdTransformer.h / .m。它仍然适用于 IB ..??

为什么会这样,我是否需要费心初始化前两个?