1

重複の可能性:
UITableViewにplistを入力する方法

次のようにデータをplistに保存します。

- (IBAction)save:(id)sender
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"data.plist"];
    NSMutableArray *data = [NSMutableArray arrayWithContentsOfFile:plistPath];

    if (nil == data) {
        data = [[NSMutableArray alloc] initWithCapacity:0];
    }
    else {
        [data retain];
    }

    NSMutableDictionary *array = [[NSMutableDictionary alloc]init];
    [array setObject:label1.text forKey:@"Test1"];
    [array setObject:label2.text forKey:@"Test2"];
    [array setObject:label3.text forKey:@"Test3"];
    [array setObject:label4.text forKey:@"Test4"];

    NSLog(@"%@", array);
    [data addObject:array];
    [array release];

    [data writeToFile:plistPath atomically: TRUE];
    [data release];
}

NSLog:

2012-07-01 18:52:19.566 testapp[22651:707] {
    Test1 = 40;
    Test2 = 102;
    Test3 = 153;
    Test4 = 255;
}

保存したデータをにロードするにはどうすればよいuitableviewですか?

4

1 に答える 1

1

それを読むには、次のようにします。

NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];

次に、次のようにすべてのキーの値を読み取ることができるはずです。

NSString *myValue = [plistDict objectForKey:@"someKey"];

編集:

コードを読み直した後、やりたくないことをしているように見えます。現在の plist 構造は、「保存」を呼び出すたびに辞書を追加する最上位の配列です。これはあなたがやろうとしていることですか?もしそうなら、テーブルのセル、配列のインデックスを表すものは何ですか?

もしそうなら、あなたはやりたいです

// top level array
NSMutableDictionary* plistArray = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];

// individual dictionary at one array index (such as indexPath.row in cellForRowAtIndexPath)
NSMutableDictionary *dictionary = [plistArray objectAtIndex:yourIndex];

いずれにしても、「配列」という名前のオブジェクトは実際には辞書であるため、名前を変更する必要があります (または、必要に応じて配列に変更します)。

于 2012-07-01T16:29:46.027 に答える