Get strong typed, autocompleted resources like images, fonts and segues in Swift projects
It makes your code that uses resources:
- Fully typed, less casting and guessing what a method will return
- Compiletime checked, no more incorrect strings that make your app crash at runtime
- Autocompleted, never have to guess that image name again
Currently you type:
let icon = UIImage(named: "settings-icon")
let font = UIFont(name: "San Fransisco", size: 42)
performSegueWithIdentifier("openSettings")
With R.swift it becomes:
let icon = R.image.settingsIcon
let font = R.font.sanFransisco(size: 42)
performSegueWithIdentifier(R.segue.openSettings)
Check out more examples of R.swift based code!
After installing R.swift into your project you can use the R
-struct to access resources. If the struct is outdated just build and R.swift will correct any missing/changed/added resources.
R.swift currently supports these types of resources:
Runtime validation with R.validate()
:
- If images used in storyboards are available
- If view controllers with storyboard identifiers can be loaded
CocoaPods is the recommended way of installation, as this avoids including any binary files into your project.
There is also a short video of this instruction.
- Add
pod 'R.swift'
to your Podfile and runpod install
- In XCode: Click on your project in the file list, choose your target under
TARGETS
, click theBuild Phases
tab and add aNew Run Script Phase
by clicking the little plus icon in the top left - Drag the new
Run Script
phase above theCompile Sources
phase and belowCheck Pods Manifest.lock
, expand it and paste the following script:"$PODS_ROOT/R.swift/rswift" "$SRCROOT"
- Build your project, in Finder you will now see a
R.generated.swift
in the$SRCROOT
-folder, drag theR.generated.swift
files into your project and uncheckCopy items if needed
Tip: Add the *.generated.swift
pattern to your .gitignore
file to prevent unnecessary conflicts.
- Download a R.swift release, unzip it and put it into your source root directory
- In XCode: Click on your project in the file list, choose your target under
TARGETS
, click theBuild Phases
tab and add aNew Run Script Phase
by clicking the little plus icon in the top left - Drag the new
Run Script
phase above theCompile Sources
phase, expand it and paste the following script:"$SRCROOT/rswift" "$SRCROOT"
- Build your project, in Finder you will now see a
R.generated.swift
in the$SRCROOT
-folder, drag theR.generated.swift
files into your project and uncheckCopy items if needed
Tip: Add the *.generated.swift
pattern to your .gitignore
file to prevent unnecessary conflicts.
- What are the requirements to run R.swift?
- Why should I choose R.swift over alternative X or Y?
- How does R.swift work?
- Why was R.swift created?
Please post any issues, questions and compliments in the GitHub issue tracker and feel free to submit pull request with fixes and improvements. Keep in mind; a good pull request is small, forked from the develop
-branch and well explained. It also should benefit most of the users.
R.swift is created by Mathijs Kadijk and released under a MIT License.