Заполнение Plist для UITableView, хранящегося в каталоге документов

У меня есть plist, хранящийся в Document Directory, как вызвать UITableView, если он хранится в каталоге документов

вставить изображение. Вот как я прочитал из plist.

In ViewDidLoad

- (void)viewDidLoad {

 NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                             NSUserDomainMask, YES); 
NSString *documentsDirectory = [documentPaths objectAtIndex:0];
NSString *documentPlistPath = [documentsDirectory stringByAppendingPathComponent:@"p.plist"];

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:documentPlistPath];

NSArray *valueArray = [dict objectForKey:@"title"];

self.mySections = valueArray;

[super viewDidLoad];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
//Return the number of sections.
return [self.mySections count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSString *key = [self.mySections objectAtIndex:section];
NSArray *dataInSection = [self.myData objectForKey:key];
return [dataInSection count];
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString *key = [self.mySections objectAtIndex:section];
return [NSString stringWithFormat:@"%@", key];
}

-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return self.mySections;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"Cell";

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

// Configure the cell...


NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];



NSString *key = [self.mySections objectAtIndex:section];

NSDictionary *dataForSection = [[self.myData objectForKey:key] objectAtIndex:0];
NSArray *array=dataForSection.allKeys;

cell.textLabel.text = [[dataForSection allKeys] objectAtIndex:row];    
cell.detailTextLabel.text=[dataForSection valueForKey:[array objectAtIndex:indexPath.row]];

return cell;
}

ИЗМЕНИТЬ, когда я NSlog valueArray выводит ( { pass = tryrt; title = tyr; }, { pass = tryrt; title = tyr; }, { pass = tryrt; title = tyr; }, { pass = tryrt546546; title = tyr; } )

значит проблема в

cellForRowAtIndexPath


person Christien    schedule 12.12.2012    source источник
comment
У вас есть массив словарей в .plist.   -  person A-Live    schedule 12.12.2012
comment
да.. какие изменения требуются в коде.. помогите   -  person Christien    schedule 12.12.2012
comment
Этот код сам по себе выглядит не очень хорошо, он предполагает, что self.myData является словарем массивов (разделов) словарей (строк) в numberOfRowsInSection, но является словарем массивов словарей массивов NSString в cellForRowAtIndexPath, это очень запутанно. Я думаю, будет проще, если вы сначала определитесь со структурой источника данных. Если вы хотите прочитать данный .plist в self.myData и использовать его, неясно, как эти данные представляют разделы и строки. Может быть, вы могли бы объяснить, для чего нужны значения pass и title. Кроме того, можете ли вы изменить структуру .plist, если это необходимо?   -  person A-Live    schedule 12.12.2012
comment
Например, у меня есть два текстовых поля для этих значений, которые я сохранил в pass и title. Теперь хочу заполнить из plist, и я могу изменить, но затем нужно внести изменения, чтобы сохранить данные в plist   -  person Christien    schedule 12.12.2012
comment
Ну, я могу представить, что значения pass, имеющие одну и ту же пару title, сгруппированы в разделы, чтобы значение title использовалось в качестве заголовка раздела, а значения pass были текстом строк. Вы хотите увидеть что-то подобное?   -  person A-Live    schedule 12.12.2012
comment
я пишу. Я отредактировал свой код.. как я сохранил данные текстового поля в plist   -  person Christien    schedule 12.12.2012
comment
каково ваше требование   -  person Rajneesh071    schedule 12.12.2012
comment
@ Rajneesh071 заполнение plist (изображение выше) для uitableview   -  person Christien    schedule 12.12.2012
comment
вы можете получить данные в valueArray, просто nslog это   -  person Rajneesh071    schedule 12.12.2012
comment
@ Rajneesh071 это то же значение, которое я ввел ... я думаю, что проблема в ячейке ForRowAtIndexPath, вы нашли какую-либо ошибку   -  person Christien    schedule 12.12.2012
comment
@A-Live проблема в cellForRowAtIndexPath, bcz У меня есть slog для valuearray .. это то же значение, которое я ввел в plist   -  person Christien    schedule 12.12.2012
comment
просто дайте мне nslog(@%@,valuearray);   -  person Rajneesh071    schedule 12.12.2012
comment
массив значений ( {pass = tryrt; title = tyr; }, {pass = tryrt; title = tyr; }, {pass = tryrt; title = tyr; }, {pass = tryrt546546; title = tyr; } )   -  person Christien    schedule 12.12.2012
comment
@ Rajneesh071 проверьте правильность   -  person Christien    schedule 12.12.2012
comment
Я до сих пор не уверен, в чем проблема, есть ли какие-то исключения или таблица пуста?   -  person A-Live    schedule 12.12.2012
comment
@A-Live ya таблица пуста из приведенного выше кода. Я уверен, что проблема в cellForRowAtIndexPath   -  person Christien    schedule 12.12.2012
comment
проверьте мой ответ, а затем обновите меня.. не могли бы вы объяснить мне, как будет выглядеть ваш tableView..   -  person Rajneesh071    schedule 12.12.2012


Ответы (1)


person    schedule
comment
Спасибо! сейчас он работает нормально. но проблема в том, что... в таблице... каждое значение отображается дважды.. означает строку 1 и повторяющееся значение в строке 2 для всех - person Christien; 12.12.2012
comment
и если я верну 1; в разделе numberofrowsinsection... тогда вывод в порядке - person Christien; 12.12.2012
comment
наслаждайтесь сейчас... эта проблема была в том, что я не знаю, чего именно вы хотите.. :)] - person Rajneesh071; 13.12.2012