我目前有一个带有后端sqlite数据库的工作TableView应用程序来提供数据。第一个视图返回静态标题为“States”的所有状态。我想改变这种方式,以字母顺序返回州(例如阿拉巴马州,阿拉斯加州,亚利桑那州,阿肯色州属于'A'部分 - 加利福尼亚州,科罗拉多州,康涅狄格州属于'C'等部分) 。Objective-C numberOfSectionsInTableView - 按字母顺序返回段的查询
我的appdelegate调用一个查询'select id,state from state'。我有我认为是工作代码来创建下面的部分(我已经通过创建一个NSMutableArray,只有状态作为对象,它工作正常)测试了这一点。
stateIndex = [[NSMutableArray alloc] init];
for (int i=0; i<[listOfStates count]-1; i++){
//---get the first char of each state---
char alphabet = [[listOfStates objectAtIndex:i] characterAtIndex:0];
NSString *uniChar = [NSString stringWithFormat:@"%C", alphabet];
//---add each letter to the index array---
if (![stateIndex containsObject:uniChar])
{
[stateIndex addObject:uniChar];
}
}
没有警告/错误,我运行模拟器,但它崩溃。过了一会儿,我明白了它为什么会崩溃。我正在尝试在搜索过程中查找字母字符,但由于原始查询调用了id和状态名称,因此它正在查看id并失败。该搜索需要在搜索中,因为它链接到另一个根据所选状态加载城市的表格。该id是主键。
所以,我的问题是...有没有一种方法可以剥离或在搜索过程中跳过id字段来创建字母部分?
预先感谢您!
修订SchoolHouse.h ========
#import <UIKit/UIKit.h>
#import <sqlite3.h>
@interface SchoolHouse : NSObject {
}
@property (assign, nonatomic, readonly) NSInteger schoolHouseID;
@property (copy, nonatomic) NSString *schoolHouseName;
-(id) initWithSchoolHouseData:(NSInteger)pk schoolHouseName:(NSString *)name;
@end
如果某个东西崩溃了,那么从发布的调试器发布什么样的崩溃日志或消息会很有帮助。你还应该试着帮助我们理解listOfStates里面的对象是什么 - 只是'NSString's? –
嗨,关于崩溃日志......它表示“索引中的无效字符”......我梳理列表时看到的是id(数字)而不是字符。至于listOfStates里面的对象是什么......这是NSMutableArray包含sqlquery的结果“select id,state from states”。 – user1542684
我可以从代码中看到'listOfStates'是一个NSMutableArray - 我在问里面的对象是什么类?在调试器中说'po [listOfStates objectAtIndex:0]'时,他们的描述是什么? –