我目前有一個帶有後端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]'時,他們的描述是什麼? –