2011-11-08 5 views
1

私のiPhoneアプリの設定バンドルに保存されている特定の設定を呼び出そうとしています。私は保存されたものに基づいてifステートメントを実行したい。実装ファイルの私のコードは次のようになります。設定ファイルにiOSで特定のユーザーのデフォルトを呼び出す方法

branchMatch = [[NSString alloc] initWithString:[defaults objectForKey:@"branch"]]; 

オブジェクト特定のブランチの名前だけです。私はSIGABRTのエラーを取得し続けますが、私は理由は分かりません。

答えて

1

objectForKey呼び出しがnilを返さないことを確認していますか?

+0

すべての入力をありがとうはい、それは...わから理由はまだありません。 – fmi

6

まず、別の文字列で文字列を初期化する必要はありません。 branchMatchがNSString*であると仮定すると、次は十分であろう:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
branchMatch = (NSString*)[defaults objectForKey:@"branch"]; 

第二に、objectForKeynilを返すかどうかを確認します。あなたのSIGABRTはおそらくそこに何もないからです。

EDIT:ユーザーが設定を開き、明示的に変更するまで、これらの値はコレクションに存在しません。設定が見つからない場合は、妥当な値を入力することはあなた次第です(nil)。設定バンドルのものは自動的には適用されません。設定アプリがUIを適切に初期化するためのものです。

+0

ありがとう...私はそれをrecodedしました: NSString * branchName = [defaults objectForKey:@ "branch"]; 私の結果は "null"を返しています(結果を表示するためにalertviewを使用しました)。今私はなぜ私がnullになっているのか分からない。 – fmi

+0

編集を参照してください。 –

+0

設定root.plistで自分の識別子を確認しましたが、確かに "ブランチ"です。私のデフォルト値は "Edmonton"です。このセクションの完全なコードは次のとおりです。 NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSString * branchName = [defaults objectForKey:@ "ブランチ"]; UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@ "Branch" デリゲート:自己cancelButtonTitle:@ "OK" otherButtonTitles:nil]; [アラートショー]; – fmi

1

代わりにこれを行います引っ張っ多くの髪が、私は私が代わりのViewControllerのデリゲートクラスからユーザデフォルトをロードする必要があることを実現

NSUserDefault* defaults = [NSUserDefauls standardUserDefaults]; 
NSString* setting = [defaults objectForKey:@"branch"]; 
if (setting) 
    // Do what needed if branch is set 
else 
    // Do what needed if branch has never been set 
関連する問題