C#アプリケーションでは、常にapp.config
ファイルを使用して、必要なときにアプリケーションがロードするデータを保存します(接続文字列など)。
このような情報をiOSアプリケーションに保存する最良の方法は何ですか?
プロパティリストファイルを作成できます(XCodeには、[ファイル]-> [新しいファイル]をクリックして選択するためのテンプレートがあります)。したがって、 "settings.plist"などを作成できます。 plistはキー=>値の設定ファイルであると考えることができますが、値としてプレーンテキスト以外に配列や辞書を保持することもできます。
NSBundleを使用して、次のようにアプリにファイルをロードします
NSString *path = [[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"];
NSDictionary *settings = [[NSDictionary alloc] initWithContentsOfFile:path];
その後、通常の辞書としてキーにアクセスできます。 ;)の後に忘れずに[リリース]してください。
接続文字列のような小さなデータの場合、 NSUserDefaults を使用します。
接続文字列を保存するには、次のようにします。
[[NSUserDefaults standardUserDefaults] setObject:myConnectionString
forKey:@"connectionString"];
ロードしたい場合は、次のようにします。
myConnectionString = [[NSUserDefaults standardUserDefaults]
stringForKey:@"connectionString"];
構成要素の比較的単純なセットを保存するだけの場合は、単純に NSDictionary のシリアル化メソッドを使用できます(クラスドキュメントのメソッドディレクトリにリンクする方法がわかりません)。
NSString *settingsPath = [@"~/pathtoconfig.plist" stringByExpandingTildeInPath];
NSMutableDictionary *settings = [NSMutableDictionary dictionary];
if([[NSFileManager defaultManager] fileExistsAtPath:settingsPath]){
settings = [NSMutableDictionary dictionaryWithContentsOfFile:settingsPath];
}
// writing settings
[settings writeToFile:settingsPath atomically:YES];
Objective-Cにどれだけ精通しているかわからないので、次の点にも注意してください。
Swift with iOS 8.のiOSアプリケーション設定ファイル:
let path: String = NSBundle.mainBundle().pathForResource("Info", ofType: "plist")!
let nsDictionaryInfoPlist: NSDictionary = NSDictionary(contentsOfFile: path)!
// Usage example: Google Maps iOS SDK/API Configuration.
GMSServices.provideAPIKey(nsDictionaryInfoPlist.objectForKey("GoogleMapsiOSAPIKey") as! String)
Swift 3 Xcode 8に更新
「Sample.plist」という名前のプロジェクトに新しいプロパティリストを追加します。次に、次の例を参照してください。
let path: String = Bundle.main.path(forResource: "Sample", ofType: "plist")!
let sampleConf: NSDictionary = NSDictionary(contentsOfFile: path)!
print(sampleConf.object(forKey: "test") as! String)
IOsでは、すべてのアプリに独自のサンドボックスがあり、そのアプリでのみ使用できます。そのため、そのファイルを読み取り専用にしたい場合は、アプリケーションバンドルに保存します。それ以外の場合は、アプリケーションフォルダーに保存します。
アプリケーションフォルダに直接アクセスできないため、そのフォルダにファイルを保存する場合は、プログラムで実行する必要があります。
私はプロパティリストを使用して小さなデータを格納します-それらの使用方法についてはこちらをご覧ください:
http://iphoneincubator.com/blog/tag/nspropertylistserialization