我正在使用Xcode創建一個iOS應用程序。我也在使用SQL服務器(xampp)。它的整體效果很好。但是我有問題在以下點:等待在ios中的sql查詢響應
-I有視圖用表視圖控制器和我填充使用SQL查詢的結果(想象標記列表是包含12行的陣列)
- (void)viewDidLoad
[[API sharedInstance] commandWithParams:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"listtags", @"command", nil] onCompletion:^(NSDictionary *json) {
NSArray* result = [[NSArray alloc] initWithArray:[json objectForKey:@"result"]];
taglist =[[NSMutableArray alloc] initWithArray:result];
[taglist removeAllObjects];
for(NSDictionary* i in result){
[taglist addObject:[i objectForKey:@"tag"]];
}
NSLog(@"sql %u",taglist.count);
}];
NSLog(@"did load %u",taglist.count);
此表
}
而且有對tableviews
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSLog(@"table %u",taglist.count);
return taglist.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
NSLog(@"cell %u",taglist.count);
cell.textLabel.text = [taglist objectAtIndex:indexPath.row];
return cell;
}
兩個必需方法問題是因爲它需要一段時間才能獲得查詢結果,我的表方法使用空的taglist數組來填充。所述NSLogs的輸出都是這樣
2012-12-19 14:35:41.470 iReporter[33507:c07] did load 0
2012-12-19 14:35:41.473 iReporter[33507:c07] table 0
2012-12-19 14:35:41.476 iReporter[33507:c07] cell 0
2012-12-19 14:35:41.479 iReporter[33507:c07] cell 0
2012-12-19 14:35:41.481 iReporter[33507:c07] cell 0
2012-12-19 14:35:41.483 iReporter[33507:c07] cell 0
2012-12-19 14:35:41.484 iReporter[33507:c07] cell 0
2012-12-19 14:35:41.486 iReporter[33507:c07] cell 0
2012-12-19 14:35:41.487 iReporter[33507:c07] cell 0
2012-12-19 14:35:41.489 iReporter[33507:c07] cell 0
2012-12-19 14:35:41.493 iReporter[33507:c07] cell 0
2012-12-19 14:35:41.564 iReporter[33507:c07] sql 12
這意味着viewDidLoad中,numberofRows和cellForRow功能後標記列表數組爲空。但是當查詢完成時,我可以得到正確的值。但到那時我的表格屬性已被定義,所以它是沒有用的, 我的問題是,有沒有辦法等待該響應,並確保它不是空的然後用它來創建表。 謝謝
嗨,你找到了解決方案嗎?我有一個非常類似的問題。 –
它已經這麼久了,但下面的答案應該工作。查詢完成後,塊內的任何內容都會執行。 onCompletion:^(NSDictionary * json){ // [self.tableView reloadData] }]; – ardavar