2012-07-01 45 views
1

可能重複:
How to populate UITableView with 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

回答

1

要閱讀它,這樣做:

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

那麼你應該能夠讀取值這樣所有鍵:

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

編輯:

後重讀你的代碼,看起來你可能正在做一些你不想做的事情。您當前的plist結構是一個頂級數組,每次調用「save」時都會爲其自身添加一個字典。這是你想要做的嗎?如果是這樣,表中的單元格代表數組中的一個索引?

如果是這樣,那麼你想要做

// 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]; 

在任何情況下,你命名的對象「數組」實際上是一本字典,所以你應該將其重命名(或改變它是一個數組,如果這你想要什麼)。

+0

我的觀點是每次調用「保存」時都會將新數據保存爲新字典,而不是每次更換舊數據。我還沒有任何表格,因爲我不知道它應該是什麼樣子。 –