Cocoa 通过绑定和值转换器在视图(NSTableColumn)中显示多对多关系
我有一个实体标记(在核心数据中),它有一些属性和一个名为“别名”的多对多关系 我的ArrayController在Xcode中“绑定”到:Cocoa 通过绑定和值转换器在视图(NSTableColumn)中显示多对多关系,cocoa,core-data,cocoa-bindings,nsvaluetransformer,Cocoa,Core Data,Cocoa Bindings,Nsvaluetransformer,我有一个实体标记(在核心数据中),它有一些属性和一个名为“别名”的多对多关系 我的ArrayController在Xcode中“绑定”到: Parameters->Managed Object Context = File's Owner.managedObjectContext 它适用于所有属性,其他列显示正确的值 在一个专栏中,我试图“显示”这一对多关系。如果我天真地这样做,并将我的NSTableColumn的值绑定到我的ArrayController.arrangedObjects
Parameters->Managed Object Context = File's Owner.managedObjectContext
它适用于所有属性,其他列显示正确的值
在一个专栏中,我试图“显示”这一对多关系。如果我天真地这样做,并将我的NSTableColumn的值绑定到我的ArrayController.arrangedObjects.Alias(与所有其他属性一样),我会在屏幕上看到:
()的关系错误,
名称别名、等参变量1、isTransient 0、实体标记、,
重命名标识符别名、验证谓词()、警告(),
versionHashModifier(null),目标实体TagAlias,
0x10053db10上的inverseRelationship标记,最小计数0,最大计数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:方法中,value属于类“\u NSFaultingMutableSet”,我不知道如何获取别名集/数组或任何有用的内容
目标是构建每个别名连接的NSString。比如:
aTag:别名1别名2别名3
我找到了解决办法:
_NSFaultingMutableSet实际上是一种NSSet,因此通过执行以下操作:
- (id)transformedValue:(id)value {
if (value == nil) return nil;
NSArray *tags = [value allObjects];
for (Tag *tag in tags) {
...
}
}
您可以访问所有实体
不知道为什么现在很明显而不是一周前。。。走出新手区