我有一个实体标签(在核心数据中),它有一些属性和一对多关系,名为"别名"。
我的ArrayController是" bind"在Xcode中:
Parameters->Managed Object Context = File's Owner.managedObjectContext
它适用于所有属性,其他列显示正确的值。
在一栏中,我尝试"显示"这种多对多的关系。如果我天真地这样做并将我的NSTableColumn的值绑定到我的ArrayController.arrangedObjects.aliases(就像所有其他属性一样),我会在屏幕上看到它:
()的关系错误, name aliases,isOptional 1,isTransient 0,entity Tag, renamingIdentifier别名,验证谓词(),警告(), versionHashModifier(null),目标实体TagAlias, inverseRelationship标记,minCount 0,0x10053db10上的maxCount 0
似乎是这种关系的某种CoreData代理......
然后我构建了NSValueTransformer的子类:
@interface tagAliasesToStringTransformer : NSValueTransformer
+ (Class)transformedValueClass;
+ (BOOL)allowsReverseTransformation;
- (id)transformedValue:(id)value;
@end
并尝试将其用作绑定中的Value Transformer。但是我的实施失败了:
@implementation tagAliasesToStringTransformer
+ (Class)transformedValueClass {
return [NSString class];
}
+ (BOOL)allowsReverseTransformation {
return NO;
}
- (id)transformedValue:(id)value {
if (value == nil) return nil;
...
}
@end
在transformValue:方法中,value是类' _NSFaultingMutableSet'并且我不知道如何获得别名的Set / Array或任何有用的东西。
目标是构建每个别名的串联的NSString。类似的东西:
aTag:alias1 alias2 alias3 ...
答案 0 :(得分:3)
我找到了解决方案:
_NSFaultingMutableSet实际上是一种NSSet,所以通过这样做:
- (id)transformedValue:(id)value {
if (value == nil) return nil;
NSArray *tags = [value allObjects];
for (Tag *tag in tags) {
...
}
}
您可以访问所有实体。
不知道为什么现在显而易见,而不是一周前......走出新手区?