gpt4 book ai didi

ios - 通过 JSON 层次结构和 objectForKey 使用 AFNetworking 加载 ImageView

转载 作者:行者123 更新时间:2023-11-29 10:43:57 25 4
gpt4 key购买 nike

AFNetworking 很陌生,但经过许多 SO 问题...我得出结论,这就是我的问题的解决方案。

我有一个层次结构的 JSON 数据动态加载我的 TableViewController 单元格。我所有的文本字符串都正确加载,但来 self 的 URL 的图像没有进入我的 ImageView 。

在使用 AFNetworking 库之前,我加载了图像,但我遇到了一些问题,当我滚动离开并返回时,照片没有保持加载状态(它们必须重新加载。)

我缺少什么才能将我的图像放在那里?

TableViewController.m

-(void)viewDidLoad {
[super viewDidLoad];

// Set the side bar button action. When it's tapped, it'll show up the sidebar.
siderbarButton.target = self.revealViewController;
siderbarButton.action = @selector(revealToggle:);

// Set the gesture
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

self.tableView.backgroundColor = [UIColor whiteColor];
self.parentViewController.view.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1];

self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo_app_white.png"]];

NSURL *myURL = [[NSURL alloc]initWithString:@"http://domain.com/json2.php"];
NSData *myData = [[NSData alloc]initWithContentsOfURL:myURL];
NSError *error;

jsonArray = [NSJSONSerialization JSONObjectWithData:myData options:NSJSONReadingMutableContainers error:&error];

[tableView reloadData]; // if tableView is unidentified make the tableView IBOutlet
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return jsonArray.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

NeedCardTableViewCell *cell = (NeedCardTableViewCell *) [tableView dequeueReusableCellWithIdentifier:@"needCard"];

if (cell == nil)
{
cell = [[NeedCardTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"needCard"];
}

NSDictionary *needs = jsonArray[indexPath.row]; // get the data dict for the row
cell.textNeedTitle.text = [needs objectForKey: @"needTitle"];
cell.textNeedPoster.text = [needs objectForKey: @"needPoster"];
cell.textNeedDescrip.text = [needs objectForKey: @"needDescrip"];

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"userImage" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
_imageProfPic.image = responseObject;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];

return cell;
}

最佳答案

您是否尝试过使用 AFNetworking+UIImageView类别?然后你可以调用:

[_imageProfPic setImage:[NSURL URLWithString:@"http://myimageurl.com/imagename.jpg"]];

这将发出请求,然后将返回的图像设置为您的 UIImageView 的 UIImage,您无需执行任何其他操作。您还应该考虑在 AppDelegate 中初始化 NSURLCache:

NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024
diskCapacity:10 * 1024 * 1024
diskPath:nil];
[NSURLCache setSharedURLCache:cache];

看看NSHipster's run down on NSURLCache .这将有助于第二次更快地重新加载图像和您的所有请求。这在处理图像和表格时变得越来越重要。

关于ios - 通过 JSON 层次结构和 objectForKey 使用 AFNetworking 加载 ImageView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23122654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com