该库旨在成为 IntrepidPursuits 工程师制作的 Swift 方法的通用百宝箱。根据这个库,有用组件将在适当的地方单独放入 podspec。
采用百宝箱的方法是为了更容易添加材料,并鼓励组件化和共享公共功能。
source 'https://github.com/IntrepidPursuits/intrepid-wisdom.git'
pod 'IntrepidSwiftWisdom'
use_frameworks!
source 'https://github.com/IntrepidPursuits/intrepid-wisdom.git'
target 'SwiftWisdomTests',
use_frameworks!
pod 'IntrepidSwiftWisdomTesting'
end
Swift 中调度操作的基本包装。语法示例
Qu.Background {
// Sleep for long operation
sleep(4)
log("1")
} .Also {
sleep(4)
log("2")
} .Also {
sleep(1)
log("3")
} .Also {
sleep(1)
log("4")
} .Also {
sleep(1)
log("5")
} .ThenAfter(.Previous(3)) {
log("6: After 5, 4, & 3")
} .Then {
sleep(1)
log("7: After 6")
} .FinallyOn(.Main) {
sleep(1)
log("Finished: After All")
}
执行或重复未来操作的一种简单方法
After(2.5) {
print("Two and a half seconds later")
}
RepeatAtInterval(1.0, numberOfTimes: 5) {
print("Once a second, 5 times")
}
从 nib 加载视图
let myCustomView = MyCustomView.fromNib()
设置易于使用的配色方案。注意,如果您使用 Zeplin,并且如果您想自动生成配色方案
enum ColorPalette : ColorDescriptor {
case White = "254,216,130,255"
case DarkGreen = "51,58,24,255"
case DarkGray = "64,48,56,255"
case BrightWhite = "#ffffff"
var color: UIColor {
return rawValue.color
}
}
然后使用
someView.backgroundColor = ColorPalette.White.color
覆盖大多数表格视图注册/出列的一种简单方法
tableView.ip_registerCell(YourCell.self)
tableView.ip_registerHeader(YourHeader.self)
let cell: YourCell = tableView.ip_dequeueCell(indexPath)
//
let header: YourHeader = tableView.ip_dequeueHeader(section)
一种简单且类型安全地从默认值读取和写入的方法
enum Setting : String, EnumSettingsKeyAccessible {
case DisplayName
case LastOpenDate
}
let displayName: String? = Setting.DisplayName.readFromDefaults
Setting.DisplayName.writeToDefaults(displayName)
struct ApplicationSettings {
var displayName: String {
get {
return Setting.DisplayName.readFromDefaults ?? ""
}
set {
Setting.DisplayName.writeToDefaults(newValue)
}
}
}
与使用 Objective-C 风格的异步完成块(如(possibleObject: AnyObject?, error: NSError?)
)相比,结果类型更可取
func fetchName(completion: Result<String> -> Void)
然后使用
fetchName { result in
switch result {
case let .Success(name):
print("Successfully got name: \(name)")
case let .Failure(error):
print("Failed to get name: \(error)")
}
}
用于在一整天时间和NSDate
之间相互转换
转换为时间
let date = ...
let timeOfDay = TimeOfDay(date)
// or
let timeOfDay = TimeOfDay("1:30")
转换为日期
let timeOfDay = ...
// Time Today
let todayAtThatTime = timeOfDay.timeToday()
// Time on given date
let someDate = ...
let timeOnThatDate = timeOfDay.timeOnDate(someDate)
欢迎所有贡献和更新!在提交新增内容时,以下是一些基本指南:
ip_
以避免命名空间。Swift的命名空间在扩展中应用方式不同,前缀有助于避免问题。