0

このコードを使用して、コンテンツを plist に追加しています。

//////////// Save data into plist /////////////////
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"datatesting.plist"];
NSLog(@"path='%@'",path);

NSFileManager *nfm = [[NSFileManager alloc] init];
if([nfm fileExistsAtPath:path])
{
    // if file exists, get its contents, add more entries and write back
    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:path];
    NSArray *keys = [NSArray arrayWithObjects:@"Title",@"Description",@"Coordinate",nil]; 

    [array addObject:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:[NSString stringWithFormat:@"%@",titlestring],[NSString stringWithFormat:@"%@",descriptionstring],[NSString stringWithFormat:@"%@",coordinadastring], nil] forKeys:keys]]; 
    NSLog(@"modified array=%@",array);
    BOOL ok = [array writeToFile:path atomically:YES];
    if(!ok){
        NSLog(@"Unable to write appended file");
        return;
    }

} else {

    // if file doesn't exist, create a new one
    NSMutableArray *array = [[NSMutableArray alloc] init];
    NSArray *keys = [NSArray arrayWithObjects:@"Title",@"Description",@"Coordinate",nil]; 
    [array addObject:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:[NSString stringWithFormat:@"%@",titlestring],[NSString stringWithFormat:@"%@",descriptionstring],[NSString stringWithFormat:@"%@",coordinadastring], nil] forKeys:keys]]; 
    NSLog(@"new array=%@",array);
    BOOL ok = [array writeToFile:path atomically:YES];
    if(!ok){
        NSLog(@"Unable to write new file");
        return;
    }
}    

現在、plist のコンテンツの使用に問題があります。だから私の2つの質問は: - 現在のplistの辞書のキーは何ですか? - Tableview のコンテンツを読み取る方法は?

4

1 に答える 1

1

辞書の配列があります。配列の内容を反復処理してから、各辞書を調べる必要があります。これは、ブロック列挙子または古い for() スタイルで行うことができます。ブロックを知らないかもしれないので、ここでは後者を使用します。

NSArray *array = ...; // read in the array from the file
for(NSDictionary *dict in array) {
  NSString *title = [dict objectForKey:@"Title"];
  ... etc
}

このデータをタブビューに表示する場合、行数は辞書の数 (つまり [配列数]) になります。各セルのタイトルだけを表示したい場合は、セルの行番号を取得し、[array objectAtIndex:cellRow]) で辞書を取得してから、上記のようにタイトルを引き出します。

于 2012-08-08T11:50:36.220 に答える