Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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
Core data 带核心数据绑定的Base64 png_Core Data_Base64_Cocoa Bindings_Nsimageview - Fatal编程技术网

Core data 带核心数据绑定的Base64 png

Core data 带核心数据绑定的Base64 png,core-data,base64,cocoa-bindings,nsimageview,Core Data,Base64,Cocoa Bindings,Nsimageview,我有JSON,它包含我添加到核心数据中的base64解码PNG图像。我想用绑定到我的核心数据模型的图像井来显示这些图像 问题是我不能将数据与NSArchiveFromData一起使用,因为它已被弃用 我的问题类似于,但我不太明白答案 有人有主意吗 谢谢您没有定义您的问题到底是什么 要从NSData加载NSImage,请参阅和initWithData: 假设您有这样的核心数据对象: @class MyObject : NSManagedObject @property NSData *imag

我有JSON,它包含我添加到核心数据中的base64解码PNG图像。我想用绑定到我的核心数据模型的图像井来显示这些图像

问题是我不能将
数据
NSArchiveFromData
一起使用,因为它已被弃用

我的问题类似于,但我不太明白答案

有人有主意吗


谢谢

您没有定义您的问题到底是什么

要从NSData加载NSImage,请参阅和
initWithData:


假设您有这样的核心数据对象:

@class MyObject : NSManagedObject

@property NSData *imageData;

@end 
它的实施:

@implementation MyObject

@dynamic imageData; 

@end
现在,添加一个新属性:

-(NSImage *)bindableImage {
    [self willAccessValueForKey:@"bindableImage"];
    NSImage *myImage = [[NSImage alloc] initWithData:[self imageData]];
    [self didAccessValueForKey:@"bindableImage"];
    return myImage;
}
另外,当imageData属性发生更改时,通知绑定哪些更改:

+ (NSSet *)keyPathsForValuesAffectingImageData {
    return [NSSet setWithObjects:@"bindableImage", nil];
}
就这样。我想,这应该行得通,但我没有尝试:)



我忘了Base64-请检查另一个答案。

您没有定义您的问题到底是什么

要从NSData加载NSImage,请参阅和
initWithData:


假设您有这样的核心数据对象:

@class MyObject : NSManagedObject

@property NSData *imageData;

@end 
它的实施:

@implementation MyObject

@dynamic imageData; 

@end
现在,添加一个新属性:

-(NSImage *)bindableImage {
    [self willAccessValueForKey:@"bindableImage"];
    NSImage *myImage = [[NSImage alloc] initWithData:[self imageData]];
    [self didAccessValueForKey:@"bindableImage"];
    return myImage;
}
另外,当imageData属性发生更改时,通知绑定哪些更改:

+ (NSSet *)keyPathsForValuesAffectingImageData {
    return [NSSet setWithObjects:@"bindableImage", nil];
}
就这样。我想,这应该行得通,但我没有尝试:)



我忘了Base64-请检查另一个答案。

尝试一些类似的方法(我不确定您是在属性上使用绑定,还是使用NSArrayController-我将尝试回答这两种情况)

您可以从json中提取字符串并对其进行解码: (您需要stackoverflow答案中引用的开源库:)

然后用这些数据初始化图像

如果使用NSArrayController管理核心数据,请创建一个返回映像的值转换器

创建NSValueTransformer的子类,并根据需要命名它。在实现中,添加:

+(Class)transformedValueClass {
    return [NSImage class];
}
-(id)transformedValue:(id)value {
    if (value == nil) {
        return nil;
    } else {
        NSData *data = [NSData dataWithBase64EncodedString:value]; //might be [value stringValue]
        return [[NSImage alloc] initWithData:data];
    }
}

然后,在已对映像设置绑定的interface builder中,只需将值转换器设置为所创建的类。

尝试这样做(我不确定您是在属性上使用绑定,还是使用NSArrayController-我将尝试回答这两种情况)

您可以从json中提取字符串并对其进行解码: (您需要stackoverflow答案中引用的开源库:)

然后用这些数据初始化图像

如果使用NSArrayController管理核心数据,请创建一个返回映像的值转换器

创建NSValueTransformer的子类,并根据需要命名它。在实现中,添加:

+(Class)transformedValueClass {
    return [NSImage class];
}
-(id)transformedValue:(id)value {
    if (value == nil) {
        return nil;
    } else {
        NSData *data = [NSData dataWithBase64EncodedString:value]; //might be [value stringValue]
        return [[NSImage alloc] initWithData:data];
    }
}

然后在interface builder中设置图像绑定,只需将值转换器设置为您创建的类。

问题是我想用绑定实现这一点,但我不知道如何用Base64编码的图像实现这一点。问题是我想用绑定实现这一点,但我不知道如何用Base64编码的图像实现这一点。谢谢!我会在有时间的时候尽快实施(今晚晚些时候)。是的,我使用NSArrayController。我会试试看,然后你可以兑现:)谢谢!我会在有时间的时候尽快实施(今晚晚些时候)。是的,我使用NSArrayController。我会试试看,然后你就可以套现了:)