IntrepidSwiftWisdom 0.0.15

IntrepidSwiftWisdom 0.0.15

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2016年1月
SPM支持 SPM

Logan Wright维护。



  • 作者:
  • Logan Wright

该库旨在成为 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

组件

Qu

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

执行或重复未来操作的一种简单方法

After(2.5) {
  print("Two and a half seconds later")
}

RepeatAtInterval(1.0, numberOfTimes: 5) {
  print("Once a second, 5 times")
}

Nib Initable

从 nib 加载视图

let myCustomView = MyCustomView.fromNib()

Color Descriptor

设置易于使用的配色方案。注意,如果您使用 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

Cell Configuring

覆盖大多数表格视图注册/出列的一种简单方法

Register
tableView.ip_registerCell(YourCell.self)
tableView.ip_registerHeader(YourHeader.self)
Dequeue
let cell: YourCell = tableView.ip_dequeueCell(indexPath)
//
let header: YourHeader = tableView.ip_dequeueHeader(section)

User Defaults

一种简单且类型安全地从默认值读取和写入的方法

Define
enum Setting : String, EnumSettingsKeyAccessible {
    case DisplayName
    case LastOpenDate
}
Read
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的命名空间在扩展中应用方式不同,前缀有助于避免问题。
  • 如有歧义,请记录功能