测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可协议 | MIT |
发布最后发布 | 2017年10月 |
SwiftSwift版本 | 4.0 |
支持SPM支持SPM | ✓ |
由Thanh Pham维护。
' ____ ___
' | \ / \
' | _ || |
' | | || O |
' | | || |
' | | || |
' |__|__| \___/
'
' ___ ____ ______ ____ ___ ____ ____ _
' / \ | \| || |/ \ | \ / || |
' | || o ) | | || || _ || o || |
' | O || _/|_| |_| | || O || | || || |___
' | || | | | | || || | || _ || |
' | || | | | | || || | || | || |
' \___/ |__| |__| |____|\___/ |__|__||__|__||_____|
'
' ____ ____ ______ ___ ____ ____ ___ _ ____ ______ ____ ___ ____
' | || \ | | / _]| \ | \ / \ | | / || || |/ \ | \
' | | | _ || | / [_ | D )| o ) || | | o || | | || || _ |
' | | | | ||_| |_|| _]| / | _/| O || |___ | ||_| |_| | || O || | |
' | | | | | | | | [_ | \ | | | || || _ | | | | || || | |
' | | | | | | | | || . \| | | || || | | | | | || || | |
' |____||__|__| |__| |_____||__|\_||__| \___/ |_____||__|__| |__| |____|\___/ |__|__|
'
NoOptionalInterpolation消除了Swift字符串插值中的"Optional(...)"和"nil"。这在设置文本到UI元素(如 UILabel 或 UIButton)时尤其有帮助。由于XCode在撰写本指南时,还没有为插值Optional显示任何警告,并且您可能需要更改变量类型(在Optional和非Optional之间),此库确保您设置的文本永远不会包含令人烦恼的附加"Optional(...)"。当需要时,您也可以恢复默认行为。
此外,该库还通过自定义运算符使复数化文本变得更容易。
只需导入NoOptionalInterpolation,然后所有操作都为您完成。
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 string2
请注意,这也不会影响 print 函数。因此,print(o)(与print("\(o)"), 上面例中的o)将仍然打印出 Optional(Optional("string2"))。
对于您的 Optional,使用 *运算符。
...
let i = "\(n*) \(t*) \(s*) \(o*)"
print(i) // Optional(1) nil Optional("string1") Optional(Optional("string2"))
使用 ~ 运算符复数化单词。
let age = 42
let text = "I am \(age ~ "year") old" // "I am 42 years old" // actually not // for now
使用 / 运算符提供复数形式。
let memberCount = 42
let text = "The team consists of \(memberCount ~ "person" / "people")" // "The team consists of 42 people"
要省略数量,交换数量和单词的位置。
let listenerCount = 42
let text = "Do it \("yourself" / "yourselves" ~ listenerCount)" // "Do it yourselves"
这也适用于 Optional。
let count: Int?? = 42
let fruit: String?? = "apple"
let text = "I have \(count ~ fruit)" // "I have 42 apples"
默认情况下,如果您未使用 / 运算符提供复数形式,则会将 "s" 追加到您的单词以形成复数形式。要使复数化更智能,您可以为指定自定义 PluralizerType
。您可以在这里找到一个。
在您的Podfile中
pod 'Pluralize.swift', :git => "https://github.com/joshualat/Pluralize.swift.git"
注意:由于Pluralize.swift
pod尚未与Swift 3兼容。
然后
import NoOptionalInterpolation
import Pluralize_swift
extension Pluralize: NoOptionalInterpolation.Pluralizer {}
...
NoOptionalInterpolation.PluralizerType = Pluralize.self
assert(42 ~ "oasis" == "42 oases")
将 /NoOptionalInterpolation/Classes/
中的所有文件添加到您的项目中。您的操作已完成。
从版本3.0.0开始,使用了Swift 3语法。如果您的项目仍在使用Swift的早期版本,请使用3.0.0之前的NoOptionalInterpolation版本。
Podfile
pod 'NoOptionalInterpolation', '~> 2.0.6'
或 Cartfile
github "T-Pham/NoOptionalInterpolation" ~> 2.0.6
NoOptionalInterpolation遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。