我有一个问题,由于某种原因,我无法自己解决。
我所拥有的是从数组加载的tableView,它是从文件加载的。 (我在头文件中将我的数组声明为NSArray)
NSString *subMenuFileList = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"plist"]; // file list name/location
sectionsArray = [[NSArray alloc] initWithContentsOfFile:subMenuFileList];//loading my array with the contents of the file
我的一切工作正常,对于我的表格部分我使用sectionsArray.count
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return sectionsArray.count; // return number of rows
和cell.textLabel.text我有以下代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cell.textLabel.text= [sectionsArray objectAtIndex:indexPath.row];// get cell name from the array at row#
return cell;
也可以。
我遇到的问题是加载的文件不按字母顺序排列,因此我的数组不是按字母顺序排列的。我对此问题的解决方案是将文件加载到临时数组中,对其进行排序,然后使用以下简单代码将其分配给sections数组:
NSString *subMenuFileList = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"plist"]; // file list name/location
tempArray = [[NSArray alloc] initWithContentsOfFile:subMenuFileList];
sectionsArray = [tempArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];// my new sorted array
由于某种原因,在这个简单的tweek之后,当程序试图确定部分中的行数或单元格textLabel看到图片文件(http://img846.imageshack.us/i/screenshot20110416at141.png/)时,其他任何函数都无法访问我获得EXC_BAD ACCESS。我无法弄清楚为什么会发生这种情况,因为变量是全局的,当我为sectionsArray.count执行NSLog时,它会打印正确的值。
任何帮助都会非常感激。谢谢!!
答案 0 :(得分:1)
sectionsArray = [tempArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
这将导致自动释放的数组。你可以保留它。
sectionsArray = [[tempArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)] retain];
一般情况下,我建议使用sectionsarray的属性(非原子,保留)..那么这是你的代码:
NSArray* tempArray = [[NSArray alloc] initWithContentsOfFile:subMenuFileList];
self.sectionsArray = [tempArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
[tempArray release];
最诚挚的问候, 基督教