2011-08-08 4 views
0

간단한 질문이 있습니다. 왜 "origineArray"가 return (null)을 사용합니까? 내가 RootViewController에 모든 코드를 넣으면 작동하지만, AppDelegate에 넣으면 (샘플 코드에있는 것처럼, 나는 더 좋은 방법이 아닌가?), 인식하지 못한다. 루트 "키 : 당신의 도움plist의 "루트"키가 AppDelegate에서 인식되지 않습니까?

답변

1

응용 프로그램 대리인이 nib 파일로 작성된 경우 init 메서드가 호출되지 않습니다. 닙의 항목은 이미 초기화되어 보관됩니다.

NIB에서로드 된 개체를 초기화하려면 - (void) awakeFromNib 메서드를 구현하십시오.

+0

덕분에, 실제로 AppDelegate에서 코드를 얻었습니다. plib 파일을 사용하여 앱을 시작할 수 있습니까? Interface Builder에서 이렇게 만들었습니까? – Paul

+0

plist 파일에서 NSDictionary를 만들고 인터페이스 빌더에서 자동으로 유선 화하는 방법이 있다고 생각하지 않습니다. 그러나 로딩 코드를 init이 아닌 위임자의 awakeFromNib 메서드에 넣으면로드가 적절해야합니다. – codelark

+0

고마워, 사실 "루트"가 배열이기 때문에 "NSDictionary"대신 "NSArray"를 넣어야했는데 처음에는 그 실수를 보지 못했습니다. 어쨌든 도와 주셔서 감사합니다! – Paul

0

당신은 로그인하는 대한

- (id)init { 
    self = [super init]; 
    if (self){ 
     NSString *path = [[NSBundle mainBundle] bundlePath]; 
     NSString *finalPath = [path stringByAppendingPathComponent:@"origine.plist"]; 
     origine = [[NSDictionary dictionaryWithContentsOfFile:finalPath]retain]; 
    } 
    return self; 
} 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    NSLog(@"origine data : %@", origine); 
    NSArray *origineArray = [origine objectForKey:@"Root"]; 
    NSLog(@"origineArray data : %@", origineArray); 

감사합니다"origine "사전을,이 콘솔에 무엇을 기록 하는가? "Root"키가 없으면 올바른 파일을 분명히 열지 않습니다. 사전이 NULL이면 경로를 수정해야합니다.

finalPath에 올바른 경로가 포함되어 있습니까? origin.plist가 resources 폴더에 있지만 파인더에서 앱 번들의 위치를 ​​사용하고있는 것으로 보입니다.

관련 문제