1

いくつかの属性と「エイリアス」という名前の対多関係を持つエンティティ タグ (コア データ内) があります。

私のArrayControllerは、Xcodeで次のように「バインド」されています。

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

すべての属性で問題なく動作し、他の列には正しい値が表示されます。

あるコラムでは、この対多関係を「表示」しようとしています。単純にそれを行い、NSTableColumn の値を ArrayController.arrangedObjects.aliases (他のすべての属性と同様) にバインドすると、画面に次のように表示されます。

()、名前エイリアス、isOptional 1、isTransient 0、エンティティ タグ、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: メソッドでは、値はクラス '_NSFaultingMutableSet' であり、エイリアスのセット/配列または有用なものを取得する方法がわかりません。

目標は、各エイリアスの連結の NSString を構築することです。何かのようなもの:

aTag : エイリアス1 エイリアス2 エイリアス3 ...

4

1 に答える 1

3

私は解決策を見つけました:

_NSFaultingMutableSetは実際には一種のNSSetであるため、次のようにします。

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

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

すべてのエンティティにアクセスできます。

なぜそれが今では明らかであり、1週間前ではないのかわからない...初心者ゾーンから抜け出す?

于 2011-11-26T13:46:39.083 に答える