2010-03-16 2 views
1

EDIT_002 : 추가로 다시 작성 : 아래 메서드를 사용하여 메서드를 저장하면 어떻게 다시로드 할 수 있습니까?encodeWithCoder로 저장 한 후 객체를로드하는 방법은 무엇입니까?

// ------------------------------------------------------------------- ** 
// METHOD_002 
// ------------------------------------------------------------------- ** 

-(void)saveMoons:(NSString *)savePath { 
    NSMutableData *data = [[NSMutableData alloc] init]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [moons encodeWithCoder:archiver]; 
    [archiver finishEncoding]; 
    [data writeToFile:savePath atomically:YES]; 

    [archiver release]; 
    [data release]; 
} 

게리

+1

당신은 지금 무엇을 잘못 무엇입니까? 개인적으로 나는 당신의 간단한 버전을 선호합니다. 단순하지 않은 버전을 수행하는 유일한 이유는 특수한 것을하거나 오브젝트에 대해 (또는 비표준 파일 형식을 작성해야하는) 일을해야만하는 경우입니다. –

+0

간단한 것이 하나 필요하다. 그냥 관심이 있었다. 나는 내가 잘못한 생각을 가지고 있을지도 모른다. 나는 빠른 모양을 가지고 내가 찾은 것을 편집한다 ... – fuzzygoat

+0

그래, 내가 볼 수있는 유일한 문제는 1) 위성이 없다면 1) 재산 또는 보유 재산이 아님. 또는 2) loadPath가 잘못된 경로 (즉, savePath와 같지 않음) 인 경우 –

답변

1

가 발견 (달이 NSNumbers의있는 NSMutableArray이다), 내 문제는 내가 ... 것을 사용 하였다

내가 사용하고 있어야
[moons encodeWithCoder:archiver]; 

...

:
[archiver encodeObject:moons]; 

는 따라서 로더는 같을 것이다

-(void)loadMoons_V3:(NSString *)loadPath { 
    NSData *data = [[NSData alloc] initWithContentsOfFile:loadPath]; 
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 
    [self setMoons:[unarchiver decodeObject]]; 
    [unarchiver finishDecoding]; 

    [unarchiver release]; 
    [data release]; 
} 

게리

관련 문제