코코아 아이폰 개발 - 세이브 화일 저장하기

아이폰 개발에 세이브화일 save/load는 필수죠.
NSString으로 저장한다든지 하는.. -_-; 여러가지 방법이 있겠지만..

아래는 NSKeyedArchiver/NSKeyedUnarchiver를 이용하고 
NSCoder를 통해서 객체별로 serialize를 하는 방식입니다.

약간 무겁다?는 느낌도 있지만.. 요 정도가 확장에도 무난하고 쓸만한거 같네요.
(비도 오고.. 소화도 안되고 해서.. 정리 겸.. ;;)

//
// 범용으로 사용하는 save / load 함수 샘플
//

+(void)saveToFile:(NSString*)filename object:(id)root

{

NSString *path = [self getPath:filename];

      // root 부터 줄줄이 하위객체를 다 돌면서 path화일에 저장하게 됩니다.

BOOL saved=[NSKeyedArchiver archiveRootObject:root toFile:path];

if (saved){

NSLog(@"saved");

else {

NSLog(@"not saved");

};

}


+(id)loadFromFile:(NSString*)filename

{

NSString *path = [self getPath:filename];

              // path화일을 읽어서 적절한 객체를 생성해서 넘겨줍니다.

id obj = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

return obj;

}



//
// 저장할 class 샘플
//
// 빨강색 볼드체가 핵심! 이런 식으로 serialize가 필요한 객체에 NSCoding함수에 대한 구현을 하면 됨.
// 일단 save/load 없이 구현해놓고, 빨강색 부분만 나중에 추가해도 할만한데
// 이 객체 자체의 생성 시점이 NSKeyedUnarchiver를 호출할때 initWithCoder가 불릴 때라는 걸 주의~
//

@interface MyObject : NSObject<NSCoding> {

   ....

int score;

MySubObject* subObj;

int intArray[INT_ARRAY_MAX];

}

... 

@end



@implementation MyObject


- (id) initWithCoder: (NSCoder *)coder

{

if ((self = [super init]))

{

score = [coder decodeIntForKey:@"score"];

self.subObj = [coder decodeObjectForKey:@"subObj"];

[coder decodeArrayOfObjCType:@encode(intcount:INT_ARRAY_MAX at:(void *)intArray];

}

}


- (void) encodeWithCoder: (NSCoder *)coder

{

[coder encodeInt:score forKey:@"score"];

[coder encodeObject:subObj forKey:@"subObj"]; // MySubObject도 NSCoding구현 필수!

[coder encodeArrayOfObjCType:@encode(intcount:INT_ARRAY_MAX at:(const void*)intArray];

}


@end



더 자세한 참고 링크 : http://cocoadevcentral.com/articles/000084.php

by 쉬귀 | 2010/08/25 22:15 | 개발 | 트랙백 | 덧글(0)

환타스틱한 러브스토리 영화들(Mr.Nobody 외)


미스터 노바디(Mr. Nobody, 2009)

120살 먹은 노인이 되어 2029년에 눈을 뜬다
나는 과연 원하던 대로 살았는가?

어딘가에서.. "2010 부천국제판타스틱 영화제의 놓칠 수 없는 영화"라고 소개되었던
Mr. Nobody(아무개씨?)를 드디어 감상하게 되었습니다.
정말 환상적이고 흥미로운 영화네요~ 꽤 퀄리티 높은 SF씬도 돋보이고 ^^;
인생과 사랑에 대해.. 여러가지 생각에 잠기게 하는 맛(!)있는 영화입니다.

아래에 소개하는 영화들을 재밌게 보셨던 분이면, 추천~!
본 것 중에 뭔가 비슷한 류의 영화들이 더 있을거 같은데 당장은 이 정도밖에 생각이 안나네요.
암튼.. 전 재밌게 봤고 기회가 되면 또 보고 싶은 영화들이지만,
많이들 모르거나.. 조용히 묻혔던 영화들이 아닐까 싶네요 :>


시간 여행자의 아내(The Time Traveler's Wife, 2009)

시간여행의 운명을 지닌 남자, 그를 기다리는 여자
(그나마 대중적으로 좀 볼만하지 않았을까 싶은 영화..)

캐쉬백(Cashback, 2006)
 
사랑을 되돌려줄 멈추고 싶은 아름다운 순간
(이건 참 포스터가 맘에 안 드네요;; 재밌음!!)


수면의 과학(The Science Of Sleep, 2005)

사랑은 왜 꿈처럼 되지 않을까요?
(정신없이 묘한 영화죠~ 크득..)




이터널 선샤인(Eternal Sunshine Of The Spotless Mind, 2004)

이렇게 사랑은 지워지는 걸까?
(웬지 서글픈 영화..)


영화 자료는 네이버를 참고 했습니다.

by 쉬귀 | 2010/08/08 03:19 | 영화 | 트랙백 | 덧글(2)

세상에 하나뿐인 아이패드 거치대

이 거치대는 자주 등장한.. 국민 아이패드 거치대;;
다이소 고무나무 독서대 2천원 짜리죠~
그럼, 뭐가 특별해서 하나뿐인 거치대일까요? ^_^;



바로 이 뻥~ 뚫린 구멍~!
저절로 생겼을까요? 아니죠~ -_-;

자그마치.. 십자 드라이버 하나 가지고...
 45분을~!! 팠습니다;;;
(5분이면 될 줄 알았는데 흑흑~)

쇼생크 탈출 찍었죠.. orz..



예상보다 딱 맞고..
위치도 적절해서
아이패드를 걸치기만 하면 
자석처럼 착~ 붙는 느낌..
좋네요~ +_+;



이음새 없는 완벽한 모습!;;
기분나면 날 잡아서 사포질도 해야겠군요;
단, 전동 드릴만 있었어도 몇 분이면 했을 것을...
더위먹어서 삽질을.. 쿨럭~
그래도 하고 싶은건.. 어떻게든 하고 싶을 때 해야 제 맛. (/^_^)/



어쨋든.. 그리하여
우아하고 깔끔한 자태~

+_+;

혹시나 따라하실 분은..
꼭 전동 드릴을 구비하고 하시길.. -_-;
물집생겨요 ㅠㅠ;

by 쉬귀 | 2010/08/06 00:48 | 일상 | 트랙백 | 덧글(4)

◀ 이전 페이지 다음 페이지 ▶