0

私は Plists と IOS を使用するのにかなり慣れていません。レコードのテーブルビューを読み込もうとしていますが、プロジェクトのドキュメント フォルダーからテーブルビューを読み込もうとしています。以前はバンドルからロードしていましたが、ドキュメント フォルダーを指定しました。プロジェクトから plist を削除し、ドキュメント フォルダーに保存しましたが、コピー エラーが発生しました。コードを確認して、アプリケーションのドキュメント フォルダーから読み込む方法を教えてください。デバッグで実行しましたが、ドキュメント フォルダーにある 7 つのレコードではなく、バンドル内の plist から 5 つのレコードのみを読み込みます。tableView レコードの最初の画面を読み込んだ後、上部のオプション「+」を使用して空白の画面を読み込んで別のレコードを読み込むことに注意してください。これはドキュメントフォルダーに書き込んでおり、機能します。これらの変更をマスターに表示したいと思います。また、画面を更新する方法もわかりません。「ViewDidLoad」について少し読みましたが、このメソッドの使用方法がわかりません。前もって感謝します。

よろしく、

 NSLog(@"loading data");
    self.navigationItem.title=@"Accounts";
//    NSString *accountFile = [[NSBundle mainBundle] pathForResource:@"Accounts2" ofType:@"plist"];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPath = [paths objectAtIndex:0];
    NSString *plistPath = [documentPath stringByAppendingPathComponent:@"Accounts2.plist"];
    accounts = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    account = [accounts objectForKey:@"Account"];
    number = [accounts objectForKey:@"Number"];
    dueDay = [accounts objectForKey:@"DayDue"];
    minAmount = [accounts objectForKey:@"MinAmount"];
    balance = [accounts objectForKey:@"Balance"];

    NSLog(@"data loaded");
4

1 に答える 1

0

plistそれらをドキュメントディレクトリにコピーする方法をバンドルしていない最初の一般的なこと。plistそのため、ファイルをバンドルに保存してから、次のコードのようにドキュメント ディレクトリにコピーしてください:-

BOOL success;
NSError *error;

NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"yourPlistName.plist"];

success = [fileManager fileExistsAtPath:filePath];
if (success) return;

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingFormat:@"yourPlistName.plist"];
success = [fileManager copyItemAtPath:path toPath:filePath error:&error];

if (!success) {
    NSAssert1(0, @"Failed to copy Plist. Error %@", [error localizedDescription]);
}

次のコード行を使用して、この plist ファイルを取得できます。

NSString *path = filePath;
NSMutableDictionary *plistdictionary = [[NSMutableDictionary alloc]initWithContentsOfFile:path];

次のコードのように、リソース (NSBundle) から plist ファイルを直接取得できます。

NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"yourPlistName" ofType:@"plist"];
NSMutableDictionary *plistdictionary = [[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];
于 2013-06-10T05:31:35.977 に答える