web-dev-qa-db-ja.com

iOSで.plistから値を追加および取得する方法

Webサービスに基づいたアプリケーションを実装しています。その点で、.plistのプロパティとして文字列を追加する必要があり、コードで必要なときはいつでも.plistから値を取得する必要があります。

22
sekhar

コードサンプルは次のとおりです。

NSString *path = [[NSBundle mainBundle] pathForResource: @"YourPLIST" ofType: @"plist"]; 
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile: path];
id obj = [dict objectForKey: @"YourKey"];
36
jv42
NSBundle* mainBundle = [NSBundle mainBundle]; 

// Reads the value of the custom key I added to the Info.plist
NSString *value = [mainBundle objectForInfoDictionaryKey:@"key"];

//Log the value
NSLog(@"Value = %@", value);

// Get the value for the "Bundle version" from the Info.plist
[mainBundle objectForInfoDictionaryKey:@"CFBundleVersion"];

// Get the bundle identifier
[mainBundle bundleIdentifier];
18
Nikhil Dinesh
NSURL *url = [[NSBundle mainBundle] URLForResource:@"YOURPLIST" withExtension:@"plist"];
NSArray *playDictionariesArray = [[NSArray alloc ] initWithContentsOfURL:url];

NSLog(@"Here is the Dict %@",playDictionariesArray);

または、以下も使用できます

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Sample.plist"];
6
VSN

Plistから取得するのはとても簡単です。

NSString *path = [[NSBundle mainBundle] pathForResource:@"SaveTags" ofType:@"plist"];
if (path) {
    NSDictionary *root = [NSDictionary dictionaryWithContentsOfFile:path];
}

Plistに何かを追加したい場合は、ここで答えを見つけることができます: plistにデータを書き込む方法は?

ただし、アプリにメッセージを保存するだけの場合は、NSUserDefaultsの方が適しています。

2
kimimaro

これはできません。 iOSまたはMacOSのいずれのバンドルも読み取り専用であり、読み取りのみが可能であり、ファイルの作成、書き込み、またはバンドル内のファイルを使用した操作はできません。これはAppleのセキュリティ機能の一部です。 NSDocumentsDirectoryを使用して、アプリに必要なものを書き込んだり読んだりできます

0
Janosch Hübner