我想对我创建的对象进行排序&存储在NSMutableArray
的{{1}}中。
电台为AppDelegate.m
班级
我想按字母顺序(NSObject
)&中的另一个UIViewController
显示电台名称当我点击它们时,我想将包含电台名称,纬度,经度的对象传递给下一个UITableViewCell
目前我已将站名从stationList(全局UIViewController
)提取到NSMutableArray
的Cell&上的另一个NSMutableArray。通过
UIViewController
但是当调用didSelectRowAtIndexPath时,我必须从cell&在stationList数组中搜索它以传递lat,long我认为这不好。
stationList Array Log(它有100个对象): -
[sortedArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
建议我这方面的良好做法/方法,或者使用词典?
答案 0 :(得分:1)
我在这里看到两个解决方案:
1)您可以根据stationList
indexPath.row
检索对象
- (void) tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
Stations* station = stationsList[indexPath.row];
...
}
2)您可以创建自定义UITableViewCell
并在那里存储引用的对象:
@interface StationCell : UITableVIewCell
@property(weak) Stations* station;
@end
...
- (UITableViewCell*) tableView:(UITableVIew*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
StationCell* cell;
// dequeue StationCell
...
cell.station = stationList[indexPath.row];
}
...
- (void) tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
StationCell* cell = [tableView cellAtIndexPath:indexPath];
Stations* station = cell.station;
...
}
我会根据单元格中显示的数据复杂性选择解决方案 - 使用自定义UITableViewCell
可以让机会将单元格的配置从视图控制器移动到单元格实现。
修改强>
就排序stationsList
而言,您可以使用例如:
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
stationsList = [stationsList sortedArrayUsingDescriptors:@[sort]];
答案 1 :(得分:1)
我建议不要对与数组stationList分开的站名数组进行排序。相反,如果您只想在表视图中更改oder并需要在其他地方维护其他顺序,我建议对您的stationList进行排序(或其副本)
有一些方法,如sortUsingComparator:将比较器块作为参数。您编写了一个比较数组中2个元素的块,该方法使用该块来确定对象的排序并对数组进行排序。在你的情况下,它只是编写一个比较2站对象的名称属性的块。