我有JSON包含base64解碼PNG圖像,我添加到核心數據。我想在Image Wells中將這些圖像與我的Core Data模型綁定。Base64 PNG與核心數據綁定
問題是我不能使用Data
和NSArchiveFromData
,因爲它已被棄用。
我的問題與this類似,但我並不真正瞭解答案。
有沒有人有想法?
謝謝
我有JSON包含base64解碼PNG圖像,我添加到核心數據。我想在Image Wells中將這些圖像與我的Core Data模型綁定。Base64 PNG與核心數據綁定
問題是我不能使用Data
和NSArchiveFromData
,因爲它已被棄用。
我的問題與this類似,但我並不真正瞭解答案。
有沒有人有想法?
謝謝
嘗試的東西這樣的效果(我不知道如果你只是使用上的屬性綁定,或使用一個NSArrayController - 我會試着回答這兩個方案)
你可以採取從您的JSON字符串和解碼它: (你需要在計算器的回答中引用的開源庫:https://stackoverflow.com/questions/14260936/decode-an-encoded-base64-image-in-c-sharp-in-objective-c)
NSString *jsonImage = [jsonData [email protected]"image"];
NSData *data = [NSData dataWithBase64EncodedString:jsonImage];
然後用這些數據初始化你的形象。
如果您使用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];
}
}
然後在您設定的圖像上的結合界面生成器,只需設置值轉換到您所做的類。
您沒有定義到底是什麼問題。
要從NSData加載NSImage,請參閱Apple docs和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;
}
同樣,通知綁定圖像時會發生什麼變化數據屬性已更改:
+ (NSSet *)keyPathsForValuesAffectingImageData {
return [NSSet setWithObjects:@"bindableImage", nil];
}
就是這樣。我認爲,它應該工作,但我沒有嘗試:)
我忘了Base64編碼 - 檢查另一個答案。
問題是我想用綁定來做到這一點,我不知道如何用Base64編碼的圖像做到這一點。 – Mikael
謝謝!我會盡快實施它(今晚晚些時候)。是的,我使用NSArrayController。將嘗試它,然後你可以兌現:) – Mikael
積分花費了!謝謝! – Mikael
很高興工作! – macandyp