0

私はこのコードを私にチェックすることができます私はテーブルビューでjsonアイテムを得ることができません、私はXcodeコンソールでそれらを取得し、私はエラーを見つけることができません。 ................................................................................................................................................... ............................................................................................................. ... ...私のテーブルビューはリストを取得できません

/* 
static NSString * const BaseURLStringg = @"http://api-  public.guidebox.com/v1.43/Tunisia/rKgEWJbFg0kgEHrcGXPKhPDo0XtTafyC/movies /all/250/250"; 
@interface ViewController : UIViewController<UITableViewDataSource,  UITableViewDelegate> 
@property (strong, nonatomic) NSMutableArray *tableData; 
@property (weak, nonatomic) IBOutlet UITableView *tab; 
*/   

@interface ViewController() 
@end 
@implementation ViewController 
- (void)viewDidLoad { 
[super viewDidLoad];  
NSURL *url = [NSURL URLWithString:BaseURLStringg]; 
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
[manager GET:url.absoluteString parameters:nil progress:nil  success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {   
    NSLog(@"JSON: %@", responseObject); 
    NSDictionary *jsonDict = (NSDictionary *) responseObject; 
    NSArray *products = [jsonDict objectForKey:@"results"]; 
    [products enumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop){    
     NSString *title= [NSString stringWithFormat:@"%@ ", [obj objectForKey:@"title"] ]; 
     NSString *release_year = [NSString stringWithFormat:@"%@ ", [obj objectForKey:@"release_year"] ]; 
     NSString *themoviedb= [NSString stringWithFormat:@"%@ ", [obj objectForKey:@"themoviedb"] ]; 
     NSString *original_title= [NSString stringWithFormat:@"%@ ", [obj objectForKey:@"original_title"] ];         
     [_tab clearsContextBeforeDrawing]; 
     [_tableData insertObject:title atIndex:0]; 
     [_tableData insertObject:release_year atIndex:1]; 
     [_tableData insertObject:themoviedb atIndex:2]; 
     [_tableData insertObject:original_title atIndex:3];            
    }];  //[self tableData]; 
    // [_tableData addObject:@"gggggggg"];     
    dispatch_sync(dispatch_get_main_queue(), ^{ 
     //self.tableData=[[NSMutableArray alloc]initWithArray:responseObject]; 
     [self.tab reloadData]; 
    });     
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  
    NSLog(@"Error: %@", error);   
}];   
} 
    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 
return 1; 
} 
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:  (NSInteger)section{ 
    return [self.tableData count]; 
} 
    -(UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath{  
     UITableViewCell* mycell=[tableView  dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath]; 
    // NSInteger nameindex=[_DB.arrColumnNames indexOfObject:@"name"];  
    //NSString* name=[[_myarray objectAtIndex:indexPath.row] objectAtIndex:nameindex];  
if (_tableData!=nil){   
    UILabel *title = [mycell.contentView viewWithTag:101]; 
    UILabel *release_year = [mycell.contentView viewWithTag:102]; 
    UILabel *themoviedb = [mycell.contentView viewWithTag:103]; 
    UILabel *original_title = [mycell.contentView viewWithTag:104];     
    title.text= [_tableData objectAtIndex:indexPath.row]; 
    release_year.text= [_tableData objectAtIndex:indexPath.row]; 
    themoviedb.text= [_tableData objectAtIndex:indexPath.row]; 
    original_title.text= [_tableData objectAtIndex:indexPath.row];   
} 
//[email protected]"eererr"; 
mycell.textLabel.textColor = [UIColor blackColor];    
mycell.contentView.backgroundColor = [UIColor clearColor]; 
mycell.backgroundColor = [UIColor clearColor]; 
return mycell; 
} 
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath{   
} 
- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 
@end 
+0

のこのタイプを試すには、 'cellForRowAtIndexPathです:'と呼ばれるばかり? – AdamPro13

+0

はい私はそう思います...私は初心者ですので...。 –

+0

AdamPro13はこのコード –

答えて

0

あなたはそのようなデータを設定:

 [_tableData insertObject:title atIndex:0]; 
     [_tableData insertObject:release_year atIndex:1]; 
     [_tableData insertObject:themoviedb atIndex:2]; 
     [_tableData insertObject:original_title atIndex:3]; 

しかし、あなたは次のようにデータを読み出している:

 title.text= [_tableData objectAtIndex:indexPath.row]; 
     release_year.text= [_tableData objectAtIndex:indexPath.row]; 
     themoviedb.text= [_tableData objectAtIndex:indexPath.row]; 
     original_title.text= [_tableData objectAtIndex:indexPath.row]; 

indexPath.rowは同じ整数になります(たとえば、セクション内の最初のセルの場合は0になります)。したがって、そのセルのタイトルはtitle.text,release_year.text,themoviedb.text、およびoriginal_title.textに設定されます。これはあなたの意図ではありません。あなたはNSDictionaryを使用し、それをself.tableDataに追加する必要があります。 cellForRowAtIndexPathで

 NSDictionary *movieDictionary = @{@"title":title,@"release_year":release_year,@"themoviedb":themoviedb,@"original_title":original_title}; 
     [self.tableData addObject:movieDictionary]; 

ザ・:たとえば、あなたが持つコードの最初のビットを交換する必要があり

 NSDictionary *movieDictionary = self.tableData[indexPath.row]; 
     title.text= movieDictionary[@"title"]; 
     release_year.text= movieDictionary[@"release_year"]; 
     themoviedb.text= movieDictionary[@"themoviedb"]; 
     original_title.text= movieDictionary[@"original_title"]; 
+0

ありがとうございます。問題は解決しません。 –

+0

CellLoginにNSLogを追加すると、AdamPro13の質問に答えることができます。 – beyowulf

0

私はすべてのコードを読んでいないが、私が思うに、この行は、間違っているかもしれません。

dispatch_sync(dispatch_get_main_queue(), ^{ 
     //self.tableData=[[NSMutableArray alloc]initWithArray:responseObject]; 
     [self.tab reloadData]; 
    }); 

GCDは、次のように書くのメインスレッドをロックします、そしてUIリフレッシュが実行されませんあなたがreloadDataする場合は、あなたが希望がお手伝いします

dispatch_asyn(dispatch_get_main_queue(), ^{ 
     //self.tableData=[[NSMutableArray alloc]initWithArray:responseObject]; 
     [self.tab reloadData]; 
    }); 

の下のように書く必要があります。

0

コードコード

NSURL *URL = [NSURL URLWithString:@"http://api.androidhive.info/songs/albums.php"]; 
     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
     manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 
     [manager GET:URL.absoluteString parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) { 
      [MBProgressHUD hideHUDForView:self.view animated:YES]; 
      cource_data=[responseObject valueForKey:@"name"]; 
      NSLog(@"JSON: %@", cource_data); 
      [self.tbl_cource reloadData]; 
     } failure:^(NSURLSessionTask *operation, NSError *error) { 
      NSLog(@"Error: %@", error); 
    }]; 
関連する問題