2011-08-08 34 views
0

私は簡単な質問があります:なぜ "origineArray" return(null)ですか?私はそれが動作するRootViewControllerのすべてのコードを置く場合、私はそれがAppDelegate(それはサンプルコードでは、私はどのように良い方法ではない)を置く場合、それが認識されないことがわかった "ルート」キー:あなたがログインしているあなたの助けplistの「ルート」キーがAppDelegateから認識されませんか?

答えて

1

アプリケーションデリゲートがnibファイルに作成された場合、initメソッドは呼び出されません。ペン先のアイテムは既にアーカイブされています。

NIBからロードされたオブジェクトの初期化を行う場合は、- (void) awakeFromNibメソッドを実装します。

+0

本当にありがとう、私はAppDelegateで私のコードを実際に持っています、あなたはpllファイルでペン先からアプリを始めることができますか? 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); 

おかげで 『原産地』の辞書を、それがコンソールに何をログに記録しますか? 「ルート」キーがない場合は、明らかに正しいファイルを開いていません。ディクショナリがNULLの場合は、パスを修正する必要があります。

finalPathに正しいパスが含まれていますか? origin.plistがresourcesフォルダにありますが、ファインダでアプリバンドルの場所を使用しているようです。

関連する問題