Skip to content
Swift µframework for fetching images 🍊
Branch: master
Clone or download
RuiAAPeres Merge pull request #3 from mluisbrown/patch-2
Use map with key path instead of tuple IDs
Latest commit e05875a Aug 13, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.swiftpm/xcode/package.xcworkspace First commit Aug 7, 2019
Sources/Tangerine Use map with key path instead of tuple IDs Aug 12, 2019
Tests If image exists in cache, there shouldn't be a network request Aug 8, 2019
.gitignore First commit Aug 7, 2019
Package.swift First commit Aug 7, 2019 README update Aug 8, 2019

Tangerine 🍊

Tangerine is a Swift µframework for fetching Images.


Swift Package Manager

Swift Package Manager is integrated within Xcode 11, so using Tangerine in your project is a piece of cake:

  1. File → Swift Packages → Add Package Dependency...
  2. Paste the repository URL ( and click Next.
  3. For Rules, either select version, branch or commit.
  4. Select the Target where you would like to add Tangerine. The correct one should be already selected for you.
  5. Click Finish.

Manual Installation

Drag the Tangerine.swift file into your project. 🍊


Typically a view should have a single ImageFetcher, and as such it’s not possible for one to fetch different images with only one instance of a ImageFetcher. From a code point of view:

let tangerines = URL(string: "")!
let fetcher = ImageFetcher(urL: tangerines)
let example = ExampleView(fetcher: fetcher)
struct ExampleView: View {
  @ObservedObject var fetcher: ImageFetcher
  init(fetcher: ImageFetcher) {
    self.fetcher = fetcher
  var body: some View {
    VStack { {
        Image(uiImage: $0)
          .aspectRatio(contentMode: .fit)
    .onAppear(perform: fetcher.refresh)

The actual HTTP request is done not when the ImageFetcher is created, but when the refresh method is called.

Tangerine also supports caching via NSCache. You can either supply yours, or use the default one.

You can’t perform that action at this time.