Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 通过绑定和值转换器在视图(NSTableColumn)中显示多对多关系_Cocoa_Core Data_Cocoa Bindings_Nsvaluetransformer - Fatal编程技术网

Cocoa 通过绑定和值转换器在视图(NSTableColumn)中显示多对多关系

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

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

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

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) {
        ...
    }
}
您可以访问所有实体

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