gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:59:00 28 4
gpt4 key购买 nike

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

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

Parameters->Managed Object Context = File's Owner.managedObjectContext

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

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

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

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

然后我构建 NSValueTransformer 的子类:

@interface tagAliasesToStringTransformer : NSValueTransformer

+ (Class)transformedValueClass;
+ (BOOL)allowsReverseTransformation;
- (id)transformedValue:(id)value;

@end

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

@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 : alias1 alias2 alias3 ...

最佳答案

我找到了解决方案:

_NSFaultingMutableSet 实际上是一种 NSSet,因此通过执行以下操作:

- (id)transformedValue:(id)value {
if (value == nil) return nil;

NSArray *tags = [value allObjects];
for (Tag *tag in tags) {
...
}
}

您可以访问所有实体。

不知道为什么现在就很明显,而不是一周前......走出新手区?

关于cocoa - 通过绑定(bind)和值转换器在 View (NSTableColumn)中显示一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8226157/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com