2012-02-10 3 views
0

以前は同じ問題で記事を読みましたが、私の質問はそのままです。私のアプリは、いくつかのパラメータを取得するためにplistファイルを最初に読み込む必要があり、デバイスに読み込まれると、デフォルト設定のplist(シミュレータで作業中)を読み取ることができません。 1つの解決策は、そのディレクトリにplistをコピーする必要がありますが、これだけです?デバイスはplistで設定されたユーザーのデフォルトを読み取ることができませんか? docsディレクトリにコピーすると、別の場所がある場合、デバイスはplistのキーを関連付けることができますか?私は、関数を実行する前にユーザーのデフォルトを読む必要があります。ありがとうございました。iOSはシミュレータ上のplistファイルを読み取ることができますが、デバイス上にはありません

-(void)loadSettings 
{  
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    self.userID = [[NSUserDefaults standardUserDefaults] stringForKey:@"userID"]; 

    self.nom2 = [[NSUserDefaults standardUserDefaults] stringForKey:@"t2"]; 
    self.nom3 = [[NSUserDefaults standardUserDefaults] stringForKey:@"t3"]; 
    self.nom4 = [[NSUserDefaults standardUserDefaults] stringForKey:@"t4"]; 

    self.currentGlobal = [[NSUserDefaults standardUserDefaults] stringForKey:@"versionApp"]; 
    NSLog(@"Version App = %@", currentGlobal); 


    self.colorTab = [[NSUserDefaults standardUserDefaults] stringForKey:@"color"]; 

    firstBoot = [[NSUserDefaults standardUserDefaults] boolForKey:@"firstBoot"]; 

    [defaults synchronize]; 

} 
+0

文書ディレクトリではなくplistをどこに置いたのですか? –

+0

...あなたが読んだところでコードを表示してください。 – picciano

答えて

1

standardUserDefaultsのplistをdocumentsディレクトリにコピーする必要はありません。 iOSにはこのファイルを独自に作成させ、アプリには含めないようにしてください。デフォルトを設定する必要がある場合は、standardUserDefaultsインスタンスでregisterDefaults:メソッドを使用して、キーと値のペアの辞書を渡してください。

+0

これは理解していると思います...仕事をしてお知らせします!ありがとう – Jaume

+0

素晴らしい、私はstandardUserDefaultsのコンセプトを想定していない...働いて!手伝ってくれてありがとう! – Jaume

1

あなたはNSUserDefaultsを見ましたか?

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

それは自動的にあなたが記述していると、ファイルを管理する必要はありません何ありません。設定を読み書きできるシンプルなAPIで、iOSがストレージを管理します。

+0

ありがとうございましたが、メインバンドルから文書ディレクトリにplistをコピーしてNSUserDefaultsを実行しましたが、ヌル値を読み込んで返すわけではありません。また、デバイス上でのみ実行された場合 – Jaume

+0

JaumeはNSUserDefaultsが独自のファイルを作成させるのではなく、彼のアプリをplistに提供しようとしているようです。詳細は私の答えを見てください。 – picciano

3

ユーザーのデフォルト値にいくつかの初期値を設定してアプリで読むことができるように思えば、registerDefaults:メソッドをNSUserDefaultsにするだけです。例:

[[NSUserDefaults standardUserDefaults] registerDefaults: 
    [NSDictionary dictionaryWithObject: [NSNumber numberWithBool:YES] 
           forKey: @"firstBoot"]]; 

NSUserDefaultsの美しさは、pListやiOSファイルシステムを混乱させることはありません。

関連する問題