В моем приложении у меня есть пользовательский NSObject, который содержит 2 изменяемых массива.
Мне нужно сохранить этот пользовательский NSOBject в основной сущности данных, но я понятия не имею, как мне это сделать ...
После некоторых поисков я обнаружил, что лучшим способом было бы преобразовать nsobject в nsdata и сохранить его в трансформируемом поле сущности ... но я не уверен, как это сделать.
кто-нибудь может мне помочь?
вот код для моего пользовательского объекта:
MeasureData.h
@interface MeasureData : NSObject{
}
@property (nonatomic, strong) NSMutableArray *questionsData;
@property (nonatomic, strong) NSMutableArray *answersData;
- (id) init;
@end
MeasureData.m
#import "MeasureData.h"
@implementation MeasureData
@synthesize questionsData;
@synthesize answersData;
#pragma mark -
#pragma mark int
- (id)init
{
self = [super init];
// Initalize questions array (width data from plist)
questionsData = self.makeQuestionsArray;
// NSLog(@"loaded questions array: %@",questionsData); // debug
// Initalize answers array
answersData = self.makeAnswersArray;
// NSLog(@"loaded answers array: %@",answersData); // debug
return self;
}
-(NSMutableArray *)makeQuestionsArray
{
// Initalize questions array (width data from plist)
NSString *path = [[NSBundle mainBundle] pathForResource:
@"questions.list" ofType:@"plist"];
NSMutableArray *questions = [NSMutableArray arrayWithContentsOfFile:path];
/*
[questionsData insertObject:(NSString *)string atIndex:0];
*/
return questions;
}
-(NSMutableArray *)makeAnswersArray
{
// Initalize answers array
NSMutableArray *answers = [NSMutableArray arrayWithCapacity:0];
return answers;
}
-(id)initWithCoder:(NSCoder *)decoder {
if ((self=[super init])) {
questionsData = [decoder decodeObjectForKey:@"questionsData"];
answersData = [decoder decodeObjectForKey:@"answersData"];
}
return self;
}
-(void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:questionsData forKey:@"questionsData"];
[encoder encodeObject:questionsData forKey:@"questionsData"];
}
@end
Согласно первому комментарию, я реализовал функции кодировщика / кодера для своего пользовательского класса. И попытался заархивировать и закодировать его (я новичок в ios, так что это может быть совершенно неправильно) - но это не работает ... может кто-нибудь сказать мне, что не так?
Вот кодировка (которая не работает XD):
NSMutableData *dataToSave = (NSMutableData *)self.measureData;
NSKeyedArchiver *archiverForData = [[NSKeyedArchiver alloc] initForWritingWithMutableData:dataToSave];
[archiverForData encodeObject:dataToSave forKey:@"dataToSave"];
[archiverForData finishEncoding];
//
//theMeasure is the CoreData Entity
theMeasure.result = dataToSave;