Ich benutze Tabellenansicht mit Suchleiste, json wird korrekt vom Server abgerufen. Aber die Daten werden nicht in meiner Tabellenansicht geladen, wenn ich den Viewcontroller zum ersten Mal öffne, aber wenn ich etwas in meine Suchleiste eintippe, sind Daten sichtbar und werden gefiltert und dann in meiner Tabellenansicht richtig angezeigt. kann mir jemand sagen, was könnte hier probleme sein? Ich möchte Tabellenansicht laden gesamte JSON-Daten, wenn es erste Zeit geöffnet ist.Tabellenansicht wird nicht geladen, wenn Viewcontroller zum ersten Mal geladen wird
hier ist mein Code
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self customizeUI];
NSString *savedUsername = [[NSUserDefaults standardUserDefaults]
stringForKey:@"username"];
NSString *savedPassword = [[NSUserDefaults standardUserDefaults]
stringForKey:@"password"];
isFiltered = NO;
self.residentSerachBar.delegate = self;
self.residentListTableView.delegate = self;
self.residentListTableView.dataSource = self;
filterdArray = [NSMutableArray new];
productArray = [NSMutableArray new];
NSURL *url = [NSURL URLWithString: @"XXXXX.json"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSString *authStr = [NSString stringWithFormat:@"%@:%@",savedUsername, savedPassword];
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodedStringWithOptions:0]];
[request setValue:authValue forHTTPHeaderField:@"Authorization"];
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithRequest:request
completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (!error) {
NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
productArray = [responseDictionary objectForKey:@"seniors"];
NSLog(@"GGGGGGGGHHHHHHHH:%@",productArray);
}
}] resume];
[self.residentListTableView reloadData];
}
- (void)customizeUI {
self.view.backgroundColor = [UIColor clearColor];
self.baseResidentView.backgroundColor = [UIColor menyouSeniorsPopOverBackgroundColor];
self.baseResidentView.layer.borderColor = [UIColor menyouKitchenLightGrayBorderColor].CGColor;
self.baseResidentView.layer.borderWidth = 2.0f;
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
NSLog(@"HIIIIIIII");
self.lableSelectResident.text = @"";
if(searchText.length == 0){
isFiltered = NO;
}else{
isFiltered = YES;
[filterdArray removeAllObjects];
for(int i = 0; i < [productArray count]; i++){
NSRange textRange;
textRange =[[[[productArray objectAtIndex:i] objectForKey:@"senior_name"] lowercaseString] rangeOfString:searchText options:NSCaseInsensitiveSearch];
//I wasn't sure which objectForKey: string you were looking for, just replace the one you want to filter.
if(textRange.location != NSNotFound)
{
[filterdArray addObject:[productArray objectAtIndex:i]];
NSLog(@"filterdArrayyyyyyyy:%@",filterdArray);
}
}
}
[self.residentListTableView reloadData];
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if(isFiltered){
return [filterdArray count];
}
return [productArray count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"LLLLLLLLLLLLLLL");
static NSString *cellIdentifier = @"ResidentListTableViewCell";
ResidentListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
if(!cell){
// cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
cell = [[ResidentListTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
if(!isFiltered){
NSDictionary *productDictionary = [productArray objectAtIndex:indexPath.row];
cell.residentNameLabel.text = [productDictionary objectForKey:@"senior_name"];
if([productDictionary objectForKey:@"room_no"] == [NSNull null]){
NSLog(@"CCCCCCC222222");
cell.residentRoomIdLabel.text = @"";
}else{
int room_no = [[productDictionary objectForKey:@"room_no"] intValue];
cell.residentRoomIdLabel.text = [NSString stringWithFormat:@"%d", room_no];;
}
int rId = [[productDictionary objectForKey:@"id"] intValue];
cell.residentIdLabel.text = [NSString stringWithFormat:@"%d", rId];
}
else{
NSDictionary *productDictionary = [filterdArray objectAtIndex:indexPath.row];
cell.residentNameLabel.text = [productDictionary objectForKey:@"senior_name"];
if([productDictionary objectForKey:@"room_no"] == [NSNull null]){
NSLog(@"CCCCCCC222222");
cell.residentRoomIdLabel.text = @"";
}else{
int room_no = [[productDictionary objectForKey:@"room_no"] intValue];
cell.residentRoomIdLabel.text = [NSString stringWithFormat:@"%d", room_no];;
}
int rId = [[productDictionary objectForKey:@"id"] intValue];
cell.residentIdLabel.text = [NSString stringWithFormat:@"%d", rId];
}
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
ResidentListTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
self.lableSelectResident.text = cell.residentNameLabel.text;
self.residentId = cell.residentIdLabel.text;
self.residentRoomNo = cell.residentRoomIdLabel.text;
self.residentSerachBar.text = cell.residentNameLabel.text;
[self.view endEditing:YES];
}
Vielen Dank für die Antwort @nynohu. Ich habe den Code unten gelöst. – Shelby