현재 Alamofire를 사용하여 서버에서 Json 데이터/URL 이미지를 가져옵니다.루프를 반복하고 Background Swift에서 UIImage []에 추가하십시오.
모든 것이 잘 작동하고 UIImageView에 서버의 모든 URL 이미지를로드 할 수 있습니다. 사용자는 사진 갤러리처럼 각 이미지를보기 위해 왼쪽에서 오른쪽으로 스 와이프 할 수 있습니다.
현재 데이터를 가져올 때 NSArray를 반복하고 각 URL을 이미지로 변환 한 다음 각 이미지를 UIImage []에 추가합니다.
NSArray를 반복하면 처음 시작할 때 내 응용 프로그램이 실제로 느려지므로이 프로세스를 빠르게 진행할 수있는 방법이 있습니까? 또는 백그라운드에서 이미지로 URL을 변환하는 더 나은/빠른 방법?
var pages = NSArray()
var mutable_pages = NSMutableArray()
var pageImages: [UIImage] = []
override func viewDidLoad() {
super.viewDidLoad()
self.fetchPages()
}
func fetchPages() {
Alamofire.request(.GET, "http://www.myurl.com/api/pages.json").responseJSON() {
(_, _, data, _) in
self.pages = data!.valueForKey("page_url") as NSArray!
self.mutable_pages = NSMutableArray(array: self.pages)
###THIS IS REALLY SLOW, IS THERE A FASTER SOLUTION
for var i = 0; i < self.mutable_pages.count; i++ {
###Construct the imgUrl to get an image URL for the pages
let urlString: NSString = self.mutable_pages[i] as NSString
var imgURL: NSURL = NSURL(string: urlString)!
var imgData: NSData = NSData(contentsOfURL: imgURL)!
###append each image into UIImage
self.pageImages.append(UIImage(data: imgData)!)
}
}
}
의 내부 Alamofire 요청에있는 responseImage을 사용
, 나는 당신이'var에 imgData를 찾을 생각 : NSData = NSData (contentsOfURL : imgURL)! '는 실제로 가장 많은 시간을 사용하고 있습니다. 나는 또한이 주변에 어떤 생각이 들지 않는다. 이미지를 가져 오는 것은 집중적 인 작업입니다. – 68cherries
이미지 가져 오기/디코딩이 메인 스레드에서 완료되었는지 확인하십시오. 이미지를 다운로드하는 중이기 때문에 이미지를 사용할 수없는 경우 언제든지 처리하도록 앱을 디자인해야합니다. – nielsbot
이미지를 게으르게 가져올 수도 있습니다. 처음 3 개의 이미지 (이미지 0, 이미지 1 및 이미지 n)를 가져온 다음 사용자가 스 와이프 할 때마다 다음 이미지를 가져옵니다 (오른쪽으로 스 와이프하면 이미지 2, 왼쪽으로 스 와이프하면 이미지 n-1) – Paulw11