通过绑定和值转换器在视图(NSTableColumn)中显示一对多关系
我有一个实体标签(在核心数据中),它具有一些属性和名为“别名”的一对多关系。
我的 ArrayController 在 Xcode 中“绑定”到:
Parameters->Managed Object Context = File's Owner.managedObjectContext
它对所有属性都工作正常,其他列显示正确的值。
在一栏中,我尝试“显示”这种一对多关系。如果我天真地这样做并将 NSTableColumn 的值绑定到 ArrayController.arrangedObjects.aliases (像所有其他属性一样),我会在屏幕上看到:
() 的关系错误, 名称别名、isOptional 1、isTransient 0、实体标签、 重命名标识符别名、验证谓词 ( )、警告 ( )、 versionHashModifier(空),目标实体TagAlias, inverseRelationship 标签,0x10053db10 上的 minCount 0、maxCount 0
这似乎是某种关系的 CoreData 代理...
然后我构建了 NSValueTransformer 的子类:
@interface tagAliasesToStringTransformer : NSValueTransformer
+ (Class)transformedValueClass;
+ (BOOL)allowsReverseTransformation;
- (id)transformedValue:(id)value;
@end
并尝试将其用作绑定中的值转换器。但我迷失在我的实现中:
@implementation tagAliasesToStringTransformer
+ (Class)transformedValueClass {
return [NSString class];
}
+ (BOOL)allowsReverseTransformation {
return NO;
}
- (id)transformedValue:(id)value {
if (value == nil) return nil;
...
}
@end
在方法transformedValue:中,值属于类“_NSFaultingMutableSet”,我不知道如何获取别名的集合/数组或任何有用的东西。
目标是构建每个别名串联的 NSString。像这样的东西:
aTag:别名1 别名2 别名3 ...
I have an entity Tag (in core data) that have some attributes and a to-many relationship named "aliases".
My ArrayController is "bind" in Xcode to:
Parameters->Managed Object Context = File's Owner.managedObjectContext
It work OK for all Attributes, the others columns present the correct values.
In one column I try to "display" this to-many relationship. If I do it naively and bind the Value of my NSTableColumn to my ArrayController.arrangedObjects.aliases (like all other attributes) I get this on the screen:
Relationship fault for (),
name aliases, isOptional 1, isTransient 0, entity Tag,
renamingIdentifier aliases, validation predicates ( ), warnings ( ),
versionHashModifier (null), destination entity TagAlias,
inverseRelationship tag, minCount 0, maxCount 0 on 0x10053db10
It seems to be some kind of CoreData proxy for the relationship...
I then build a subclass of NSValueTransformer:
@interface tagAliasesToStringTransformer : NSValueTransformer
+ (Class)transformedValueClass;
+ (BOOL)allowsReverseTransformation;
- (id)transformedValue:(id)value;
@end
and tried to use it as a Value Transformer in the binding. But I'm lost in my implementation:
@implementation tagAliasesToStringTransformer
+ (Class)transformedValueClass {
return [NSString class];
}
+ (BOOL)allowsReverseTransformation {
return NO;
}
- (id)transformedValue:(id)value {
if (value == nil) return nil;
...
}
@end
In the method transformedValue:, value is of class '_NSFaultingMutableSet' and I don't know how to get a Set/Array of the aliases or anything useful.
The goal is to build a NSString of the concatenation of each alias. Something like:
aTag : alias1 alias2 alias3 ...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了解决方案:
_NSFaultingMutableSet 实际上是一种 NSSet,因此通过执行以下操作:
您可以访问所有实体。
不知道为什么现在就很明显,而不是一周前......走出新手区?
I found the solution:
_NSFaultingMutableSet is actually a kind of NSSet, so by doing something like this:
you get access to all the entity.
Don't know why it's obvious now and not one week ago... getting out of newbie zone ?