2012-03-23 70 views
0

我只是新的iOS編程,所以感謝任何幫助。我試圖保存從UITextField文本plist並加載它在UITableView中。加載plist在UITableView

我已經設法使文本不被覆蓋,但是當我嘗試將它加載到表中時,應用程序崩潰。

我知道問題是當我的表加載Data.plist,因爲它是數組中的數組。

但我仍然不知道如何加載我的plist到表。 這是我的代碼將文本保存到plist。

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsPath = [paths objectAtIndex:0]; 

    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"]; 

    NSMutableArray *array = [NSMutableArray arrayWithContentsOfFile:plistPath]; 


    if (nil == array) { 
     array = [[NSMutableArray alloc] init]; 
    } 


    NSMutableArray *list = [[NSMutableArray alloc]init]; 

    [list addObject:resi.text]; 

    [array addObject:list]; 

    [array writeToFile:plistPath atomically: TRUE]; 

這是我的表視圖整個代碼

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) { 
    // Custom initialization 
    } 
return self; 
} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view from its nib. 
} 

- (void)viewDidUnload 
{ 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
// e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
// Return the number of sections. 
return 1; 
} 

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    { 
// Return the number of rows in the section. 
    return [array count]; 
    } 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
ub;/{ 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

// Configure the cell... 
cell.textLabel.text = [self.array objectAtIndex:indexPath.row]; 

//cell.textLabel.text = [array objectAtIndex:indexPath.row]; 

return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
// Navigation logic may go here. Create and push another view controller. 
/* 
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; 
// ... 
// Pass the selected object to the new view controller. 
[self.navigationController pushViewController:detailViewController animated:YES]; 
[detailViewController release]; 
*/ 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
// get paths from root direcory 
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
// get documents path 
NSString *documentsPath = [paths objectAtIndex:0]; 
// get the path to our Data/plist file 
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"]; 

array = [NSMutableArray arrayWithContentsOfFile:plistPath]; 

[myHistoryTable reloadData]; 

} 

回答

2
cell.textLabel.text = [self.array objectAtIndex:indexPath.row]; 

試試這個

//As you have NSArrays as objects in self.array. 
NSArray *list = (NSArray *)[self.array objectAtIndex:indexPath.row]; 
if(list && [list count] > 0) { //to check and avoid any crash 
    cell.textLabel.text = [list objectAtIndex:0]; 
} 
+0

感謝拉胡爾·夏爾馬 – Krrish 2012-03-23 08:47:16

+1

謝謝..!這works..but附加問題,如果我只想列出10個列表呢?如果有11個項目,則第一個項目將被第二個項目替換,等等。 – 2012-03-23 17:43:11