This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func fetchPreviewData<T: Decodable>(previewFile: String, fetcher: () -> T) -> T { | |
#if PREVIEW | |
return loadPreviewData(previewFile) | |
#else | |
return fetcher() | |
#endif | |
} | |
#if PREVIEW | |
// Below is directly "borrowed" from https://developer.apple.com/tutorials/swiftui/composing-complex-interfaces |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
import UIKit | |
func fetchPreviewImage(imageName: String, size: ImageSizeable, fetcher: () -> CGImage?) -> CGImage? { | |
#if PREVIEW | |
return loadPreviewImage(name: imageName, size: size) | |
#else | |
return fetcher() | |
#endif | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func fetchPreviewImage(imageName: String, size: ImageSizeable, fetcher: () -> CGImage?) -> CGImage? { | |
#if PREVIEW | |
return loadPreviewImage(name: imageName, size: size) | |
#else | |
return fetcher() | |
#endif | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
import Combine | |
final class MovieCollection: ObservableObject { | |
@Published var movieResponse: MovieResponse? = nil | |
... | |
func fetchMovies() -> [Movie] { | |
let response: MovieResponse? = fetchPreviewData(previewFile: "movies.json", fetcher: fetchResponse) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"page": 2, | |
"total_results": 10000, | |
"total_pages": 500, | |
"results": [ | |
{ | |
"popularity": 74.704, | |
"vote_count": 9537, | |
"video": false, | |
"poster_path": "\/kOVEVeg59E0wsnXmF9nrh6OmWII.jpg", |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct MovieRow: View { | |
var movie: Movie | |
var body: some View { | |
HStack { | |
MoviePoster(imageName: movie.posterName) | |
.frame(width: 97.5, height: 146.25, alignment: Alignment.center) | |
VStack(alignment: .leading) { | |
... |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final class ImageResolver: ObservableObject { | |
@Published var image: CGImage? = nil | |
... | |
func fetchImage() -> CGImage? { | |
return fetchPreviewImage(imageName: name, size: size, fetcher: fetch) | |
} | |
private func fetch() -> CGImage? { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import SwiftUI | |
struct MoviePoster: View { | |
let imageName: String | |
let placeholder = UIImage(named: "placeholder.jpg")!.cgImage! | |
@ObservedObject private var resolver: ImageResolver | |
init(imageName: String) { | |
self.imageName = imageName |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#if DEBUG | |
struct MovieList_Previews: PreviewProvider { | |
static var previews: some View { | |
let movies = MovieCollection().fetchMovies() | |
let selectMovies = [movies[0], movies[2], movies[3]] | |
return MovieList(movies: selectMovies) | |
.previewLayout(.sizeThatFits) | |
.environmentObject(EnvironmentConfig(mode: .PreviewMode)) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Playground - noun: a place where people can play | |
import UIKit | |
var str = "Hello, playground" | |
enum TimeIntervalUnit { | |
case Seconds, Minutes, Hours, Days, Months, Years | |
func dateComponents(interval: Int) -> NSDateComponents { |
NewerOlder