Загрузить plist в UITableView - PullRequest
0 голосов
/ 23 марта 2012

Я новичок в программировании на iOS, поэтому благодарю за любую помощь.Я пытаюсь сохранить текст из UITextField в plist и загрузить его в UITableView.

Мне удалось сделать текст не перезаписанным, но при попытке загрузить его в таблицу происходит сбой приложения.

Я знаю, что проблема в том, что моя таблица загружает Data.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];

}

1 Ответ

2 голосов
/ 23 марта 2012
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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...