2014-12-03 71 views
0

我正在處理從Flickr加載圖像的UICollectionView。當我重新加載數據的uicollectionview,應用去強制關閉,並告訴我錯誤:AFNetworking + UICollectionView

malloc: *** mach_vm_map(size=3956588544) failed (error code=3) 
*** error: can't allocate region 
*** set a breakpoint in malloc_error_break to debug 

我試圖讓使用AFNetworking返回Flickr的API總的圖像,下面的代碼:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    [manager GET:@"https://api.flickr.com/services/rest" 
     parameters:@{@"method":@"flickr.people.getPublicPhotos", 
        @"api_key":flickrApiKey, 
        @"user_id":flickrUserId, 
        @"format":@"json", 
        @"nojsoncallback":@"1"} 
     success:^(AFHTTPRequestOperation *operation, id responseObject) 
    { 
     NSLog(@"JSON: %@", responseObject); 
     flickrPhotos = [responseObject objectForKey:@"photos"]; 

     NSLog(@"total : %@",[flickrPhotos objectForKey:@"total"]); 
     [self.animationCollectionView reloadData]; 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error.localizedDescription); 
    }]; 

如何根據Flickr API返回來獲取全部圖像並重新加載uicollectionview內容?

+0

這是您使用加載圖像第一次相同的代碼?它是第一次還是不工作? – 2014-12-03 04:20:17

+0

嗨@MikeTaverne,我第一次加載圖像使用NSArray來測試你的collectionview數據源實現的uicollectionview – 2014-12-03 04:22:54

+0

?你在哪裏實現了AFHTTPRequestOperationManager代碼,在viewdidload或其他地方? – Pawan 2014-12-03 06:25:55

回答

0

很難說,沒有看到你所有的代碼。我會確保你的代碼遵循與這個tutorial相同的方法。它將向您展示如何使用一系列項目設置UICollectionView

0

我在看你的代碼,我看不到你存儲你檢索的圖片的位置。

flickrPhotos = [responseObject objectForKey:@"photos"];flickrPhotos = [responseObject objectForKey:@"photos"];將對象分配給局部變量,該變量在執行超出塊時消失。也許你應該將responseObject[@"photos"]分配到self.flickrPhotos

0

flickr.people.getPublicPhotos JSON看起來像這樣

{ "photos": { "page": 1, "pages": 1, "perpage": 100, "total": 4, 
    "photo": [ 
     { "id": "2084538116", "owner": "[email protected]", "secret": "7876c3e2a4", "server": "2034", "farm": 3, "title": "Jace & denise", "ispublic": 1, "isfriend": 0, "isfamily": 0 }, 
     { "id": "2084538068", "owner": "[email protected]", "secret": "e0a89002c0", "server": "2274", "farm": 3, "title": "jace", "ispublic": 1, "isfriend": 0, "isfamily": 0 }, 
     { "id": "2083753601", "owner": "[email protected]", "secret": "a1f0b4b6ff", "server": "2180", "farm": 3, "title": "Boulder city hall", "ispublic": 1, "isfriend": 0, "isfamily": 0 }, 
     { "id": "2084537976", "owner": "[email protected]", "secret": "73ec0231a5", "server": "2039", "farm": 3, "title": "Reindogs", "ispublic": 1, "isfriend": 0, "isfamily": 0 } 
    ] }, "stat": "ok" } 

,你需要嘗試:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    [manager GET:@"https://api.flickr.com/services/rest" 
     parameters:@{@"method":@"flickr.people.getPublicPhotos", 
        @"api_key":flickrApiKey, 
        @"user_id":flickrUserId, 
        @"format":@"json", 
        @"nojsoncallback":@"1"} 
     success:^(AFHTTPRequestOperation *operation, id responseObject) 
    { 
     NSLog(@"JSON: %@", responseObject); 
     CGFloat total = [[responseObject objectForKey:@"photos.total"] floatValue]; 
     flickrPhotos = [responseObject objectForKey:@"photos.photo"]; 

     NSLog(@"total : %f", total); 
     [self.animationCollectionView reloadData]; 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error.localizedDescription); 
    }];