- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个应用程序,我必须从网络服务器下载一些文件并将其保存在本地。我有以下 JSON
:
{
status: 200,
message: "OK",
files: [
"magazines/dentalasia/DentalAsia1/images/toc-thumb-dummy.jpg",
"magazines/dentalasia/DentalAsia1/images/bg-grid-iphone.png",
"magazines/dentalasia/DentalAsia1/images/cover/toc-thumb.jpg",
"magazines/dentalasia/DentalAsia1/images/cover/cover-typo.png",
...
]
}
我所做的是将这个字符串值保存到 NSArray
中,然后我将下载它们中的每一个。
-(IBAction)downloadMagazine:(id)sender{
// 1
progressView.hidden = NO;
NSArray *splitArray = [mag.mag_folder componentsSeparatedByString:@"/"];
NSString *magName = [splitArray lastObject];
NSString *string = [NSString stringWithFormat:@"%@/webservice/magazine/get-book/apikey/%@/magazine/%@/name/%@",baseUrl,apikey,magazine,magName];
NSLog(@"STRING IS %@",string);
NSURL *url = [NSURL URLWithString:string];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 2
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//Create general directory
NSDictionary *JSON = [responseObject copy];
NSArray *files = [JSON valueForKey:@"files"];
reversedFiles = [[files reverseObjectEnumerator] allObjects];
amountFiles = reversedFiles.count;
NSArray *splitArray = [mag.mag_folder componentsSeparatedByString:@"/"];
NSString *magName = [splitArray lastObject];
NSString *rootString = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:magName];
NSError *error = nil;
if (![[NSFileManager defaultManager] fileExistsAtPath:rootString])
[[NSFileManager defaultManager] createDirectoryAtPath:rootString withIntermediateDirectories:NO attributes:nil error:&error];
rootString = [rootString stringByAppendingPathComponent:@"/www"];
if (![[NSFileManager defaultManager] fileExistsAtPath:rootString])
[[NSFileManager defaultManager] createDirectoryAtPath:rootString withIntermediateDirectories:NO attributes:nil error:&error];
for(int i = 0 ; i<reversedFiles.count ; i++){
NSString *file = [reversedFiles objectAtIndex:i];
NSString *strUrl = [NSString stringWithFormat:@"%@/%@",baseUrl,file];
NSArray *splitUrl = [file componentsSeparatedByString:@"/"];
NSString *lastObject = [splitUrl lastObject];
if ([lastObject rangeOfString:@"."].location == NSNotFound) {
rootString = nil;
rootString = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:magName];
rootString = [rootString stringByAppendingPathComponent:@"/www"];
for (int i=0; i<splitUrl.count; i++) {
if(i>2){
NSString *pathComponent = [NSString stringWithFormat:@"/%@",[splitUrl objectAtIndex:i]];
rootString = [rootString stringByAppendingPathComponent:pathComponent];
}
}
if (![[NSFileManager defaultManager] fileExistsAtPath:rootString])
[self calculatePie:i];
[[NSFileManager defaultManager] createDirectoryAtPath:rootString withIntermediateDirectories:NO attributes:nil error:&error];
}else{
NSURL *url = [NSURL URLWithString:strUrl];
NSData *data = [NSData dataWithContentsOfURL:url];
if(data)
{
rootString = nil;
rootString = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:magName];
rootString = [rootString stringByAppendingPathComponent:@"/www"];
for (int i=0; i<splitUrl.count; i++) {
if(i>2){
NSString *pathComponent = [NSString stringWithFormat:@"/%@",[splitUrl objectAtIndex:i]];
rootString = [rootString stringByAppendingPathComponent:pathComponent];
}
}
[data writeToFile:rootString atomically:YES];
[self calculatePie:i];
}
}
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// 4
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving magazine"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
}];
// 5
[operation start];
}
-(void)calculatePie:(int)i{
float progress = (100.0 / amountFiles) * i;
float progress2 = progress / 100.0;
NSLog(@"Progress is %f",progress2);
[progressView setProgress:progress2 animated:YES];
}
这就是我的 LOG
的一部分:
2014-04-24 08:56:18.507 DentalAsia[47301:60b] Progress is 0.340136
2014-04-24 08:56:18.764 DentalAsia[47301:60b] Progress is 0.343537
2014-04-24 08:56:19.041 DentalAsia[47301:60b] Progress is 0.346939
2014-04-24 08:56:19.210 DentalAsia[47301:60b] Progress is 0.350340
2014-04-24 08:56:19.549 DentalAsia[47301:60b] Progress is 0.353741
2014-04-24 08:56:19.714 DentalAsia[47301:60b] Progress is 0.357143
但出于某种原因,我的 UIProgressview
没有移动!有人可以帮我解决这个问题吗?
谢谢!
最佳答案
确保在主线程上更新进度 View :
-(void)calculatePie:(int)i{
float progress = (100.0 / amountFiles) * i;
float progress2 = progress / 100.0;
NSLog(@"Progress is %f",progress2);
dispatch_async(dispatch_get_main_queue(), ^{
[progressView setProgress:progress2 animated:YES];
});
}
关于ios - 下载文件时 UIProgressview 不改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23261924/
你好, 过去一周我一直在尝试解决如何在我的 viewController 中创建两个 progressView 的问题,但几乎没有成功。请参阅我附上的图表,作为我提出的问题的想法。 我正在创建一个带有
我似乎有与大多数人相反的问题。我在我的 UIProgressView(它被添加到我的单元格 View )上调用 setProgress。我没有动画调用它,但变化似乎是动画的,我似乎无法将其关闭。 我看
我有一个带有三个选项卡的选项卡栏应用程序。在我的第二个选项卡 View 中,我有一个 UIProgressView。我的 viewDidLoad 方法中有一个 NSTimer,它调用更新 Progre
我有一个 UIProgressView,我试图更改进度,但从未更新。我的“慢”操作是从 NSOperation/NSOperation 队列完成的,因此它应该是多线程的。 您是否已经经历过这种情况或者
我有一个 UIProgressView 作为 subview 添加到 self.view 中。我有一个已加载行的 UITableView。我需要每一行都有图像,但我不希望应用程序等待所有图像,因此我决
我有一个UIProgressView,我希望它看起来像这个图像。我已经设置了进度颜色,但不确定是否设置未进度颜色(图像中的白色)。 最佳答案 这是我自己在探索 UIProgressView 属性时发现
我正在使用 UIProgressView在我的应用程序中,现在运行良好。但我想让它更大(在高度方面)并将其着色为不同的颜色。 我正在寻找使用 PDColoredProgressView 为颜色,并更改
我的新应用程序有小问题。一开始我以为这只是线程的问题,但现在我觉得我必须重写一半的代码来修复它。在此之前,也许你会帮助我:) 现在我正在编写将从服务器下载东西的应用程序。我们有两个对象:MainVie
我正在使用 CKOperation 将记录数组保存在云套件中,如下所示并使用进度 View 显示进度。 let saveOperation = CKModifyRecordsOperation
我做了一些 HTTP 请求,在收到 HTTP 响应时设置类属性,并使用 willSet 更新进度条值。进度条动画仅运行一次。 var data: CompatibilityData? { di
我使用 Xcode 10 和 Swift 4.2 在 UIViewController 的 viewDidload() 中,我声明了一个观察者: override func viewDidLoad()
我目前正在开发一个基于测验的 iOS 应用程序。我想添加一个进度条,根据问题的回答是否正确来改变颜色。根据回答是否正确,我只想将该间隔更改为绿色/红色,而不是整个条形。我的进度条有 50 个间隔。我尝
如果我的术语不正确,我深表歉意 - 我学习 Objective C 才几天,所以我还是有点陌生。 我有一个 ViewController,它有一个进度条 (UIProgressView),它使用
我有一个 UIProgressView 我想在我的 GLKViewController 上运行,而其余代码正在由 iOS 加载。我已将 UIProgressView 放入我的“viewDidLoad”
我有一个以编程方式添加到 Storyboard View 的 UIProgressView 以及将其放置在导航栏底部的约束。有一个菜单,打开时会暂时隐藏导航栏,关闭时会再次取消隐藏。打开和关闭此菜单后
我使用 asihttprequest 下载多个文件,我想知道如何在下载完成后通过正确的请求删除关联的 UIProgressview。 NSMutableArray *contentArray 包含 A
有没有办法让 progressTintColor 变成渐变色?具体来说,我想让它成为从绿色到红色的渐变色 - 标准温度模式。 添加子层不起作用,因为它把层放在 View “后面”: CAGradien
我正在将进度设置为 UIProgressView : [recordingProgress setProgress:seconds/600 animated:YES]; 该行位于一个不断重复的计时器中
遵循 this question 中概述的答案,我设法让 UIProgressView 有点工作,但它似乎在它应该之前完成更新(即栏“填满”)。 我尝试添加一些日志语句来查看发生了什么: float
我有一个从服务器下载图片的应用程序。我想向用户展示进度。我已经在苹果文档上阅读了有关 UIProgressView 的内容,并在该网站上阅读了许多答案,但我无法让它工作。这是我的代码在我的 viewD
我是一名优秀的程序员,十分优秀!