Skip to content

Commit 3a9227c

Browse files
authored
Merge pull request MengTo#213 from victors1681/ImageLoader_Swift_3
Fix Image loader swift 3
2 parents e5c127b + 9ee8ddb commit 3a9227c

File tree

5 files changed

+115
-100
lines changed

5 files changed

+115
-100
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
![](https://dl.dropboxusercontent.com/u/7990919/Crawler/SpringSwift3.jpg)
2+
13
## Updated for Swift 3.0
24
Requires Xcode 8 and Swift 3.
35

Spring/ImageLoader.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,19 @@ public class ImageLoader {
3737

3838
public func imageForUrl(urlString: String, completionHandler: @escaping(_ image: UIImage?, _ url: String) -> ()) {
3939
DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async {
40-
let data: NSData? = self.cache.object(forKey: urlString as NSString)! as NSData
40+
var data: NSData?
41+
42+
if let dataCache = self.cache.object(forKey: urlString as NSString){
43+
data = (dataCache) as NSData
44+
45+
}else{
46+
if (URL(string: urlString) != nil)
47+
{
48+
data = NSData(contentsOf: URL(string: urlString)!)
49+
}else{
50+
return
51+
}
52+
}
4153

4254
if let goodData = data {
4355
let image = UIImage(data: goodData as Data)

Spring/Misc.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,31 @@ public func timeAgoSinceDate(date: Date, numericDates: Bool) -> String {
232232
}
233233

234234
}
235+
236+
extension UIImageView {
237+
func setImage(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit, placeholderImage: UIImage?) {
238+
contentMode = mode
239+
URLSession.shared.dataTask(with: url) { (data, response, error) in
240+
guard
241+
let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
242+
let mimeType = response?.mimeType, mimeType.hasPrefix("image"),
243+
let data = data, error == nil,
244+
let image = UIImage(data: data)
245+
else {
246+
self.image = placeholderImage
247+
return
248+
}
249+
DispatchQueue.main.async() { () -> Void in
250+
self.image = image
251+
252+
}
253+
}.resume()
254+
}
255+
func setImage(urlString: String, contentMode mode: UIViewContentMode = .scaleAspectFit, placeholderImage: UIImage?) {
256+
guard let url = URL(string: urlString) else {
257+
image = placeholderImage
258+
return
259+
}
260+
setImage(url: url, contentMode: mode, placeholderImage: placeholderImage)
261+
}
262+
}

Spring/UnwindSegue.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@
2323
import UIKit
2424

2525
public extension UIViewController {
26-
@IBAction public func unwindToViewController (sender: UIStoryboardSegue){}
27-
}
26+
@IBAction public func unwindToViewController (_ segue: UIStoryboardSegue){}
27+
}

0 commit comments

Comments
 (0)