【发布时间】:2017-12-19 03:02:19
【问题描述】:
我正在构建一个允许用户上传照片并发送到我的服务器的应用程序。但后来我注意到,当我尝试上传多张照片时,比如说 5 张照片,有时只上传 2-4 张图片,有时上传 5 张图片。上传过程似乎不太一致,我认为这与网络有很大关系。 以下是上传代码:
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSMutableDictionary * dict = [[NSMutableDictionary alloc]init];
dict = [returnString JSONValue];
[responseStr addObject:[[dict objectForKey:@"Image"]objectForKey:@"Name"]];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
ImageIndex = ImageIndex+1;
[self imageUplaodAndProductUploadFunction:ImageIndex];
}
然后我想出了一个解决方法:
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSMutableDictionary * dict = [[NSMutableDictionary alloc]init];
dict = [returnString JSONValue];
if([responseStr containsObject:[[dict objectForKey:@"Image"]objectForKey:@"Name"]])
{
NSLog(@"It present");
itcontains =YES;
}
else
{
itcontains = NO;
NSLog(@"Not contain");
[responseStr addObject:[[dict objectForKey:@"Image"]objectForKey:@"Name"]];
}
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
if(itcontains == NO)
{
ImageIndex = ImageIndex+1;
}
[self imageUplaodAndProductUploadFunction:ImageIndex];
}
现在,它会正确上传 5 张照片,但随后发生了奇怪的情况: 假设我有 5 张图像,Image1、Image2、Image3、Image4 和 Image 5。 5张照片上传成功,但图片可能重复: 案例一:Image1、Image2、Image2、Image4、Image4 案例2:Image1、Image2、Image3、Image4、Image4
副本可以是 5 张图片中的任何一张。
有人可以帮忙吗?谢谢
【问题讨论】:
-
我假设 (a) 您正在同时运行这些请求; (b) 您有相同的实例作为所有这些并发请求的委托人; (c) 您正在引用 ivars,其中各种并发请求可能会相互叠加。最重要的是,您正在使用已弃用的
NSURLConnection。如果您将NSURLSession与完成块一起使用,很多这些问题都会自行解决。
标签: ios xcode image file-upload photo