分段tableview问题

时间:2011-07-02 09:04:47

标签: iphone arrays tableview sections

我有一个我正在制作的数据库应用程序,我可以从sqlite数据库中提取结果并将它们放在表中,但是我需要按字母顺序对它们进行分类。

所以现在我有了这段代码

AArray = [[NSMutableArray alloc] init];
    BArray = [[NSMutableArray alloc] init];
    CArray = [[NSMutableArray alloc] init];
    DArray = [[NSMutableArray alloc] init];
    EArray = [[NSMutableArray alloc] init];
    FArray = [[NSMutableArray alloc] init];
    GArray = [[NSMutableArray alloc] init];
    HArray = [[NSMutableArray alloc] init];
    IArray = [[NSMutableArray alloc] init];
    JArray = [[NSMutableArray alloc] init];
    KArray = [[NSMutableArray alloc] init];
    LArray = [[NSMutableArray alloc] init];
    MArray = [[NSMutableArray alloc] init];
    NArray = [[NSMutableArray alloc] init];
    OArray = [[NSMutableArray alloc] init];
    PArray = [[NSMutableArray alloc] init];
    QArray = [[NSMutableArray alloc] init];
    RArray = [[NSMutableArray alloc] init];
    SArray = [[NSMutableArray alloc] init];
    TArray = [[NSMutableArray alloc] init];
    UArray = [[NSMutableArray alloc] init];
    VArray = [[NSMutableArray alloc] init];
    WArray = [[NSMutableArray alloc] init];
    XArray = [[NSMutableArray alloc] init];
    YArray = [[NSMutableArray alloc] init];
    ZArray = [[NSMutableArray alloc] init];

我有代码将每个项目从数据库移动到相关的数组中,这一切都正常。

然后我有了这段代码:

All = [NSMutableDictionary dictionaryWithObjectsAndKeys:AArray,@"A",BArray,@"B",CArray,@"C",DArray,@"D",EArray,@"E",FArray,@"F",GArray,@"G",HArray,@"H",IArray,@"I",JArray,@"J",KArray,@"K",LArray,@"L",MArray,@"M",NArray,@"N",OArray,@"O",PArray,@"P",QArray,@"Q",RArray,@"R",SArray,@"S",TArray,@"T",UArray,@"U",VArray,@"V",WArray,@"W",XArray,@"X",YArray,@"Y",ZArray,@"Z",nil];
    AllArray = [NSArray alloc];
    AllArray = [AllArray initWithArray:[[All allKeys]sortedArrayUsingSelector:@selector(compare:)]];

和这个

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


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    NSArray *Array = [All objectForKey:[AllArray objectAtIndex:section]];
    return [Array count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    int sectionindex = section;
    return [AllArray objectAtIndex:sectionindex]; 

}

当我运行它工作正常,但如果我上下滚动几次应用程序崩溃没有任何错误消息。 它与部分有关,因为它在我添加它时崩溃,但我只是看不出我做错了什么

在h文件中声明的Everythings和i @property以及@synthesize以下

@property (nonatomic,retain) NSMutableDictionary *All;
@property (nonatomic,retain) NSArray *AllArray;
@property (nonatomic, retain) UITableView *TableView;

如果有人能帮助我,那真的很棒!

谢谢!

2 个答案:

答案 0 :(得分:1)

您的词典“全部”似乎未被保留。您似乎将字典对象直接分配给实例变量,而不是属性(在这种情况下,您将使用self.All)。

如果您的应用在没有消息的情况下崩溃,请确保在Xcode的工具栏中启用“断点”按钮。这将在调试器中运行应用程序,这将为您提供有关崩溃的更多有用信息。将NSZombieEnabled设置为YES也有帮助。

答案 1 :(得分:0)

看看这里:

最简单的方法是提供排序选择器(详见链接):

sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];