' ____ ___
' | \ / \
' | _ || |
' | | || O |
' | | || |
' | | || |
' |__|__| \___/
'
' ___ ____ ______ ____ ___ ____ ____ _
' / \ | \| || |/ \ | \ / || |
' | || o ) | | || || _ || o || |
' | O || _/|_| |_| | || O || | || || |___
' | || | | | | || || | || _ || |
' | || | | | | || || | || | || |
' \___/ |__| |__| |____|\___/ |__|__||__|__||_____|
'
' ____ ____ ______ ___ ____ ____ ___ _ ____ ______ ____ ___ ____
' | || \ | | / _]| \ | \ / \ | | / || || |/ \ | \
' | | | _ || | / [_ | D )| o ) || | | o || | | || || _ |
' | | | | ||_| |_|| _]| / | _/| O || |___ | ||_| |_| | || O || | |
' | | | | | | | | [_ | \ | | | || || _ | | | | || || | |
' | | | | | | | | || . \| | | || || | | | | | || || | |
' |____||__|__| |__| |_____||__|\_||__| \___/ |_____||__|__| |__| |____|\___/ |__|__|
'
NoOptionalInterpolation gets rid of "Optional(...)" and "nil" in Swift's string interpolation. This is particularly helpful when you set text to UI elements such as UILabel or UIButton. Since XCode currently, as of the time this is written, does not show any warnings when interpolating Optionals, and you might sometimes need to change your variables' type between Optional and non-Optional, this library ensures that the text you set never ever includes that annoying additional "Optional(...)". You can also revert to the default behavior when needed.
Besides, the library makes pluralizing your text easier with custom operators.
Just import NoOptionalInterpolation and everything is done for you.
import NoOptionalInterpolation
let n: Int? = 1
let t: String? = nil
let s: String? = "string1"
let o: String?? = "string2"
let i = "\(n) \(t) \(s) \(o)"
print(i) // 1 string1 string2Also, please note that this does not affect the print function. Hence, print(o) (as opposed to print("\(o)"), o as in the example above) would still print out Optional(Optional("string2")).
Use the * operator for your Optionals.
...
let i = "\(n*) \(t*) \(s*) \(o*)"
print(i) // Optional(1) nil Optional("string1") Optional(Optional("string2"))Use the ~ operator to pluralize words.
let age = 42
let text = "I am \(age ~ "year") old" // "I am 42 years old" // actually not // for nowUse the / operator to provide the plural form.
let memberCount = 42
let text = "The team consists of \(memberCount ~ "person" / "people")" // "The team consists of 42 people"To omit the quantity, swap the position of the quantity and the word.
let listenerCount = 42
let text = "Do it \("yourself" / "yourselves" ~ listenerCount)" // "Do it yourselves"It also works with Optionals.
let count: Int?? = 42
let fruit: String?? = "apple"
let text = "I have \(count ~ fruit)" // "I have 42 apples"By default, if you don't provide a plural form using the / operator, an "s" is appended to your word to make the plural form. To make the pluralization smarter, you can specify a custom PluralizerType. You can find one here.
In your Podfile:
pod 'Pluralize.swift', :git => "https://github.com/joshualat/Pluralize.swift.git"NOTE: Pluralize.swift pod is not yet compatible with Swift 3.
Then:
import NoOptionalInterpolation
import Pluralize_swift
extension Pluralize: NoOptionalInterpolation.Pluralizer {}
...
NoOptionalInterpolation.PluralizerType = Pluralize.self
assert(42 ~ "oasis" == "42 oases")Add the line below to your Cartfile:
github "T-Pham/NoOptionalInterpolation"Add the line below to your Podfile:
pod 'NoOptionalInterpolation'Add all the files in /NoOptionalInterpolation/Classes/ to your project. You are all set.
From version 3.0.0, Swift 3 syntax is used. If your project is still using earlier versions of Swift, please use a NoOptionalInterpolation version prior to 3.0.0.
Podfile
pod 'NoOptionalInterpolation', '~> 2.0.6'or Cartfile
github "T-Pham/NoOptionalInterpolation" ~> 2.0.6NoOptionalInterpolation is available under the MIT license. See the LICENSE file for more info.