好久没写了,新实现了远程获取图片,磕磕绊绊还是完成了,现在分享一下,希望能帮到大家!我的需求⬆️从一个接口获取到图片的名称并将其分别拼接到路径上,并取出来。
(1)首先你要定义一个函数,用来获取URL上的图片的路径,并进行一些处理
.h文件
#import <Foundation/Foundation.h>
//请求成功的Block
typedef void(^HttpRequestSuccessBlock)(NSArray *responseData);
//请求成功的Block
typedef void(^HtmlRequestSuccessBlock)();
//请求失败的Block
typedef void(^HttpRequestFailedBlock)(NSError *error, NSString *msg);
@interface GetPictureTool : NSObject
+(void)GetPictureWithScenicId:(NSString*) scenicid success:(HttpRequestSuccessBlock)success failure:(HttpRequestFailedBlock)failure;
@end
.m文件
#import "GetPictureTool.h"
#import "NetworkManager.h"//框架,自己引用
#import "GlobalHeader.h"
#import <ImageIO/ImageIO.h>
@implementation GetPictureTool
+(void)GetPictureWithScenicId:(NSString*) scenicid success:(HttpRequestSuccessBlock)success failure:(HttpRequestFailedBlock)failure{
NSDictionary * postParameterDic = @{@"ScenicId" : scenicid};
//static NSArray * images;
NSMutableArray *images=[[NSMutableArray alloc]init];
static NSArray *imagesPath;
NSString *urlStr=@"http://.....";//获取图片名称的接口
NSString *imageUrl=@"http://.......";//图片的下载地址
[[NetworkManager sharedManager]getWithURLString:urlStr parameterDictionary:postParameterDic successHandler:^(NSURLSessionDataTask *operation, id responseObject) {
if (responseObject) {
NSError *jsonError;
id jsonData = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:&jsonError];
NSString *result=[jsonData objectForKey:@"picpath"];
if (result!=nil) {
NSString *cccc = [result substringToIndex:[result length] - 1];
imagesPath= [cccc componentsSeparatedByString:@";"];
NSLog(@"array:%@",imagesPath);
for(NSDictionary *d in imagesPath){
NSString * imageURL =[NSString new];
imageURL= [NSString stringWithFormat:@"%@%@", imageUrl, d ];
[images addObject:imageURL];
}
if (success) {
success(images);
}
}else {
//没有数据
}
}else {
// 获取服务器数据失败
}
} failedHandler:^(NSURLSessionDataTask *operation, NSError *error) {
} expireIn:0];
}
@end
(2)调用这个函数
[GetPictureTool GetPictureWithScenicId:scenicid success:^(NSArray *responseData){
if (responseData) {
for (NSString *temp in responseData) {
UIImage *im=[UIImage new];
im=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString: temp]]];
[ImageArray addObject:im];
}
carousel.images=[ImageArray copy];
NSLog(@"zaizheli");
}
}failure:^(NSError *error, NSString *msg) {
}];
解释几点:
a.for循环将几个路径都取出来,然后给UIImage对象,在使用dataWithContentsOfURL时,记得将字符串转换成URL
b.carousel.images=[ImageArray copy];这里是将一个NSMutableArray复制给NSArray,所以用copy,不可以直接赋值