2016-03-03 71 views
1

我建設我的應用程序TheMovieDB API,但我的JSONObject總是nil.I不知道我在做什麼wrong.This是我的代碼:從NSURLSession獲取JSON與IOS

@implementation SKTMovieLibrary 

-(id) init{ 

    if (self = [super init]) { 


    NSURL *url = [NSURL URLWithString:@"https://api.themoviedb.org/3/movie/now_playing?api_key=myApiKey"]; 

    NSURLSession *session = [NSURLSession sharedSession]; 
    NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *err){ 


     NSDictionary * movieDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 


     NSArray *JSONArray = [movieDict objectForKey:@"results"]; 

     dispatch_async(dispatch_get_main_queue(), ^{ 


      _JSONObject = JSONArray; 

     }); 


    }]; 
    [dataTask resume]; 

謝謝。

+0

做你看看在調試器數據的說法?你的dataTask是否返回任何結果? –

+0

不,沒有,我已經在完成塊中設置了一個斷點,它工作正常,但是當它完成時JSONObject再次爲零。 – Skurt

+0

不知道我理解你。因此,在任務的完成處理程序中,數據是否爲零?如果它不是零,你的jsonArray有內容,對不對?然後當你調度jsonObject時是否爲零? –

回答

0

是這樣的:

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
NSURLSessionDataTask *dataTask = [_session dataTaskWithURL:url 
completionHandler:^(NSData *data, NSURLResponse *response, 
NSError *error) { 
if (!error) { 
    UIImage *image = [[UIImage alloc] initWithData:data]; 
    photo.thumbNail = image; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
    cell.thumbnailImage.image = photo.thumbNail; 
    }); 
} else { 
    // HANDLE ERROR // 
} 
}]; 
[dataTask resume]; 
+0

我曾嘗試相同的代碼,但在CollectionViewController在viewWillAppears和我有同樣的問題 – Skurt

+0

和你@屬性(弱,非原子)NSArray * jsonObject;是CollectionViewController中的一個屬性?你可以請張貼代碼嗎?你的類的頂部的屬性聲明和向下初始化方法,如viewDidLoad,viewWillAppear等? –