2014-12-03 65 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); 
    }];