iphoneアプリにキーと値のペアをplistファイルに追加するViewControllerがあります。次に、plist全体をテーブルビューのViewControllerに表示します。私が抱えている問題は、iPhoneシミュレーターの値のみが表示され、アプリを完全に再起動した場合にのみ新しいキーと値のペアが表示されることです。
注:plistファイルはアプリのリソースディレクトリに追加されることになっています更新:以下のコードは私の質問の解決策です。さらに、plistの新しいエントリを表示するために、基本的にviewDidLoadのセクションを実行する更新ボタンを実装しました。
キーと値のペアを追加するViewControllerのコードは次のとおりです。
- (IBAction)addAction:(UIBarButtonItem *)sender
{
NSString *myFile=[[NSBundle mainBundle] pathForResource:@"File" ofType:@"plist"];
dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:myFile];
NSArray *docDir=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *filePath=[docDir objectAtIndex:0];
NSString *plistPath=[filePath stringByAppendingPathComponent:@"File.plist"];
//Check plist's existance using FileManager
NSError *err=nil;
NSFileManager *fManager=[NSFileManager defaultManager];
if(![fManager fileExistsAtPath:plistPath])
{
//file doesn't exist, copy file from bundle to documents directory
NSString *bundlePath=[[NSBundle mainBundle] pathForResource:@"File" ofType:@"plist"];
[fManager copyItemAtPath:bundlePath toPath:plistPath error:&err];
}
//Get the dictionary from the plist's path
dictionary =[[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
//Manipulate the dictionary
[dictionary setObject:textContent forKey:textName];
//Again save in doc directory.
[dictionary writeToFile:plistPath atomically:YES];
}
これは、他のViewControllerのテーブルビューにplistを表示するためのコードです。
- (void)viewDidLoad
{
[super viewDidLoad];
// Initialize table data
NSArray *docDir=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *filePath=[docDir objectAtIndex:0];
NSString *plistPath=[filePath stringByAppendingPathComponent:@"File.plist"];
dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:**plistPath**];
verses = [dictionary allKeys];
[self.mainTableView reloadData];
}
ご協力ありがとうございます!