2009-04-25 10 views
2

私のアプリでは、いくつかの設定情報やそれが使用し変更するその他の小さな情報を保存するシンプルなASCIIファイルがあります。私はアプリでiPhoneにそのファイルをコピーしたいと思います。iPhone App:どこに設定ファイルを置くのですか?

1)xcodeにこのファイル(config.txt)を置く場所を教えてください。リソースの下に置く必要がありますか?

2)iPhoneでどのようにアクセスしますか?ちょうど使用できますか?

str = [NSString stringWithContentsOfFile:@"config.txt"] 

、またはもっと完全なパスを使用する必要がありますか。はいの場合、それは何ですか?

答えて

9

アプリケーションが変更できる場合は、ユーザー設定を保存するにはNSUserDefaultsを使用する必要があります。 文書はhereです。

設定

はplistファイルとして保存されているので、あなたには、いくつかの設定を使用して NSUserDefaultsに事前にしたい場合、あなたはいくつかのコード等を行うことができ、 NSDictionaryインスタンス、 NSArray事例など

を保存することができます

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"defaults" ofType:@"plist"]; 
NSDictionary *defaultsDict = [NSDictionary dictionaryWithContentsOfFile:filePath]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDict]; 

デフォルト設定でdefaults.plistファイルをResourcesフォルダに配置し、上記のコードを使用する必要があります。私はAppDelegateの+(void)initializeメソッドからそのコードを実行しますが、呼び出す別の場所を選択することができます。

+0

私は、ユーザーがから選ばれる、いくつかのデフォルトのオプションを保存したいです。彼はアプリを使いながら、彼の味にオプションを追加することができます。例えばバードウォッチングアプリの場合、最初のオプションは "dove"、 "sparrow"などです。ユーザーは "eagle"のようなものを追加できます。リストが大きくなるかもしれません(100のエントリがそうです)。 NSUserDefaultsはまだ良い選択ですか? – euphoria83

+1

パフォーマンスをテストするために、デバイス(シミュレータではない)に大きなplistファイルをロードすることをお勧めします。 パフォーマンスがさらに必要な場合は、SQLiteをチェックして、代わりにDBに情報を格納することができます。 – pgb

+0

既存のキーと値のペアを持つファイルをどのようにして、NSUserDefaultsを使用してアクセスしますか? – euphoria83

1

「はい」をリソースに入れることができます。ファイルを取得するには、その後、あなたは簡単に使用することができます。

[[NSBundle mainBundle] pathForResource:@"config" ofType:@"txt" inDirectory:@""]] 

私はしかし、あなたの設定のNSUserDefaultsを提案してもいいですか?それはあなたにそれらを読み書きするのに苦労することはありません。

0

nsuserdefaultsがニーズを満たしていない場合は、設定情報をDocumentsディレクトリのファイルに保存できます。起動時にファイルが存在しない場合は、リソースにあるバージョンを確認してください。

1

そして、あなたはNSUserDefaultsを取得したい場合は、次の操作を実行できます。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

// getting a NSString 
NSString *myString = [prefs stringForKey:@"keyToLookupString"]; 

// getting a NSInteger 
NSInteger myInt = [prefs integerForKey:@"integerKey"]; 

// getting a Float 
float myFloat = [prefs floatForKey:@"floatKey"]; 
関連する問題