Skip to content

Instantly share code, notes, and snippets.

struct User {
var name: String
var email: String
var photo: UIImage
}
struct User {
var name: String
var email: String
var photoImage: UIImage?
var photoUrl: URL?
}
func showUserPhoto(for user: User, on imageView: UIImageView, placeholderImage: UIImage? = nil) {
if let photoImage = user.photoImage else {
imageView.image = photoImage
} else if let photoUrl = user.photoUrl else {
imageView.sd_setImageWithURL(photoUrl, placeholderImage:placeholderImage)
} else {
imageView.image = placeholderImage
}
}
enum Image {
case local(UIImage)
case remote(URL)
}
struct User {
var name: String
var email: String
var photo: Image
}
func show(photo: Image, on imageView: UIImageView, placeholderImage: UIImage? = nil) {
switch photo {
case .local(let image):
imageView.image = image
case .remote(let url):
imageView.sd_setImageWithURL(photoUrl, placeholderImage:placeholderImage)
}
}
enum Image {
case local(UIImage)
case remote(URL)
init(localImage: UIImage) {
self = .local(localImage)
}
init(remoteUrl: URL) {
self = .remote(remoteUrl)
extension UIImageView {
func set(image: Image, placeholderImage: UIImage? = nil) {
switch image {
case .local(let image):
self.image = image
case .remote(let url):
self.sd_setImageWithURL(photoUrl, placeholderImage:placeholderImage)
}
}
}
let localImage = Image.local(localImage: UIImage(named:"image"))
imageview.set(image: localImage)
let remoteImage = Image.remote(url: URL(string: "http://www.simpsoncrazy.com/content/pictures/homer/homer-pythagoras.png"))
imageview.set(image: remoteImage)