Я работаю над OSX-приложением и должен сохранять информацию пользовательского класса, поэтому я пытаюсь проиндексировать его с помощью NSCoder; Однако, один из объектов Я пытаюсь кодировать/декодировать в классе является NSImage, и каждый раз, когда я пытаюсь запустить encodeWithCoder: или initWithCoder: Я один из этих сообщений две ошибки:Кодирование/декодирование NSImage
Warning - attempting to encode NSCGSImageRep
Warning - attempting to decode NSCGSImageRep
Вот мой .m:
@implementation Subject
-(id) init{
self = [super init];
if (self) {
self.ad = [[NSApplication sharedApplication] delegate];
self.editViewController = self.ad.editViewController;
self.name = @"";
self.teacher = @"";
self.mainPeriod = 1;
}
return self;
}
-(void) encodeWithCoder: (NSCoder *) coder{
[coder encodeObject:self.name forKey:@"name"];
[coder encodeObject:self.teacher forKey:@"teacher"];
NSNumber *periodNumBox = [NSNumber numberWithInt:self.mainPeriod];
[coder encodeObject:periodNumBox forKey:@"mainPeriod"];
[coder encodeObject:self.image forKey:@"image"];
}
-(id) initWithCoder: (NSCoder *) coder{
self.name = [coder decodeObjectForKey:@"name"];
self.teacher = [coder decodeObjectForKey:@"teacher"];
NSNumber *periodNumBox = [coder decodeObjectForKey:@"mainPeriod"];
self.mainPeriod = (int)[periodNumBox integerValue];
self.image = [coder decodeObjectForKey:@"image"];
return self;
}
@end
и мой .h:
#import <Foundation/Foundation.h>
#import "AppDelegate.h"
#import "EditViewController.h"
@class EditViewController;
@interface Subject : NSObject
@property (weak) AppDelegate *ad;
@property EditViewController *editViewController;
@property NSImage *image;
@property NSString *name;
@property NSString *teacher;
@property int mainPeriod;
@end
проверьте это, это может помочь вам [написать NSImage в файл] (http://stackoverflow.com/questions/3038820/how-to-save-a-nsimage-as-a-new-file) –