0

NSMutableArray * allRedItems를 파일에 저장하려고합니다. 지금까지의 모든 권리 단계를 완료했습니다오류 메시지가 내 데이터가 NULL입니다 - NSKeyedUnArchiver - 모든 단계를 수행했음을 나타냅니다 - 여전히 작동하지 않습니다.

@interface Itemz : NSObject <NSCoding> 
@property double price; 
@property double quality; 
@property double style; 


@property double overallAverage; 

: 그것은 Itemz 사용자 정의 개체를 포함 내 배열 * allRedItems 저장 한 위치

다음
@implementation Itemz 

- (void)encodeWithCoder:(NSCoder *)encoder { 


[encoder encodeDouble:self.price forKey:@"price"]; 
[encoder encodeDouble:self.style forKey:@"style"]; 
[encoder encodeDouble:self.quality forKey:@"quality"]; 
[encoder encodeDouble:self.overallAverage forKey:@"overallAverage"]; 

[encoder encodeBool: self.isClicked forKey:@"isClicked"]; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
if((self = [super init])) { 
    //decode properties, other class vars 
    self.price = [decoder decodeDoubleForKey:@"price"]; 

    self.style = [decoder decodeDoubleForKey:@"style"]; 
    self.quality = [decoder decodeDoubleForKey:@"quality"]; 
    self.overallAverage = [decoder decodeDoubleForKey:@"overallAverage"]; 
    self.isClicked = [decoder decodeBoolForKey:@"isClicked"]; 


} 
return self; 
} 
@end 

@implementation AllRedItems 
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.allRedItems]; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *allItemsRed = [documentsDirectory stringByAppendingPathComponent:@"allItemsRed"]; 

[data writeToFile:allItemsRed atomically:YES]; 
@end 

I을 그것을 검색,이 날 준다 - [NSKeyedUnarchiver initForReadingWithData :] : 데이터가 NULL입니다

@implementation ItemSuggestion 
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString * documentsDirectory = [paths objectAtIndex:0]; 
NSString * path = [documentsDirectory stringByAppendingPathComponent:@"allItemsRed"]; 
NSData * data = [NSData dataWithContentsOfFile:path]; 
NSMutableArray *allRedItems = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
@end 

나는 뭔가를 놓친가요? 또는 뭔가를 추가해야합니까?

+0

다른 것들 중에서도 컴파일과 실행의 구분이 빠져 있습니다. –

+0

죄송합니다. 새로운 오류 메시지는 [NSKeyedUnarchiver initForReadingWithData :]입니다. 데이터가 NULL입니다. 내가 누락 된 '다른 것들'은 무엇입니까? 당신의 진술에 혼란 스럽네요. –

답변

3

당신은 NSDocumentationDirectory

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); 

에 저장하지만 NSDocumentDirectory에서 검색, 그래서 당신은 그것을 얻을 수 없습니다.

NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSDocumentDirectory을 두 가지 방법으로 사용하십시오.