便利性 0.3.3

便利性 0.3.3

mxcat.维护。



便利性 0.3.3

便利性

您应用的最高便利性框架。

CI Status Version License Platform

故事

编程就是关于数据的。我们修改数据,存储它,共享它。您可以在您所做的每个应用中看到这一点。所以我终于写完了解码数据、提取可选对象、索引集合等相同代码,决定使用一个名为“可复用”的示例文件夹来存放这些代码。并将其从项目迁移到项目...

一天,《问题》出现了。当您在新的项目中向这个文件夹添加任何东西时,更改不会应用于旧的。Xcode文件夹引用可以解决这个问题,但您如果需要在远程工作且无权访问文件夹怎么办呢?

所以,我决定写这个框架并与全世界分享。我会尽量使其尽可能干净,但如果您在这里发现任何垃圾,请告诉我 c

使用

布尔值

  • 切换

    Bool().toggled == !Bool

字符集

  • 可通过字符串字面量表达

    let frameworkName = "Convenience" // == CharacterSet(charactersIn: "Convenience")

  • 静态工厂方法

    .binaryDigits

    .hexDigits

可编解码

  • 方便的编码

    Encodable.encode(using encoder: ConvenientEncoder = JSONEncoder())

    Decodable.decode(from data: Data, using encoder: ConvenientEncoder = JSONEncoder())

收集

  • 安全下标访问

    [1 ,2, 3][安全: 10] == nil

  • 整数范围下标用于双向集合

    "String"[0] == "S"

    "String"[1..<3] == "tr"

    "String"[3...] == "ing"

    ...

颜色

  • 十六进制颜色转换用于NS和UI颜色

    [NS/UI]Color(hex: "#FA6878AA")

    [NS/UI]Color(hex: "#FA6878")

    [NS/UI]Color(hex: "FA6878")

    [NS/UI]Color(rgb: 0xfa6878ff)(来自十六进制Int)

    [NS/UI]Color(rgb: 0xFA6878)

数据

  • 解码

    let decoding = Data().decode(to: SomeDecodable.self)
    decoding.value // SomeDecodable?
    switch decoding {
        case .success(let value):
        	  return value // SomeDecodable
        case .failure(let error):
          	vc.showAlert(with: error) // for ex.
    }
  • 获取字符串

    Data().string(using: .ascii)

    Data().string()(UTF-8)

错误

  • 收集

    // for now works only for () -> Void funtions
    func someThrowable() throws {}
    
    let errors: ErrorBag = Error.collect {
    		someThrowable
    		someThrowable
    		someThrowable
    }
    /* ==
    collect {
    		someThrowable
    		someThrowable
    		someThrowable
    }
    */
    
    print(errors.localizedDescription)
    // ==
    errors.contents.forEach {  
    	  print($0.localizedDescriprion)
    }

可选

  • 示例

    let a: Int? = 1 						 // a == 1
    a.isNil				 							 // false
    a.release() 								 // a == nil
    a.isNil				 							 // true
    let b = a.unwrap(default: 3) // a == nil, b == 3
    let c: SomeProtocol? = SomeInstance()
    let d = c.cast(to: SomeInstance.self, default: SomeInstance())

NS锁

NS正则表达式(Regex)

原始表示可达

转换

修改

字符串(ns、url、regex、crypto)

协议(TypeErasable、StaticNamedType)

PlainError


(正在开发新功能和 Xcode 文档(估计已完成 90%),GitHub 文档将在以后提供。)

要求

  • 📱iOS 8.0+

安装

SwiftPM

CocoaPods

便利性通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile中

pod 'Convenience'

并在终端运行pod install

许可证

在MIT许可证下提供便利。有关更多信息,请参阅LICENSE文件。


随时贡献力量或沟通。我对您的想法持开放态度。 🌝