SchafKit

GithubCI_Status LICENSE_BADGE

最新文档可以在以下位置找到: SchafKit Wiki

一个工具包,为 iOS、watchOS、macOS 和 tvOS 提供有用的功能,并充分利用 Swift 丰富的特性集。

功能

组件

密码学

SKCryptography 是 TweetNacl 的一个封装器,提供了 Curve25519XSalsa20Poly1305BoxAlgorithmXSalsa20Poly1305SecretBoxAlgorithmEd25519Algorithm 类。

调度

SKDispatchHelper 帮助将代码块提交到调度队列。

SKDispatchHelper.dispatch(
    on: .main,
    block: {
   // Do something here
})

文件系统

SKFileSystemItem 及其子类 SKFileSKDirectory 提供对文件系统的轻松访问。

网络

网络提供了一种发送简单或高级网络请求的简便方法。以下示例使用 Swift 5.5 的 await。一切也可以使用回调来实现。

简单

do {
    let result = try await SKNetworking.request(
        url: "https://github.com/Quintschaf/SchafKit"
    )
    
    print(result.stringValue) // Prints the html received
}

高级

let block : SKNetworking.RequestCompletionBlock = { (result, error) -> Void in 
    // Do something here, for example: result.jsonValue?["Test"]["Toast"]
}

let headerFields : [SKNetworking.Request.HeaderField: String] = [
    .accept : "*/*",
    "CustomField" : "CustomValue"
]

let result = SKNetworking.request(
    url: "https://github.com/JannThomas/OpenKit",
    options: [
        .requestMethod(value: .post), 
        .headerFields(value: headerFields), 
        .body(value: .xWwwFormUrlencoded(value: ["Key" : "Value"]))
    ]
)

// Do something with the result

正则表达式

SKRegexMatch 处理正则表达式。

guard let matches = "Test".regexMatches(with: "(T)est") else {
   return
}

print(matches.first?.captureGroups.first) // "T"

扩展

SchafKit 的很大一部分是扩展。您可以在文档中找到所有扩展,但这里列出最重要的扩展及其示例。

字符串

静态变量

变量 返回类型 描述 结果
empty 字符串 一个空字符串。 ""
space 字符串 一个包含空格字符的字符串。 " "
newline 字符串 一个包含换行符的字符串。 "\n"
tab 字符串 一个包含制表符的字符串。 "\t"

变量

变量 返回类型 描述 示例 结果
localized 字符串 接收器的本地化版本。 "DONE_BUTTON_TEXT".localized "Done"
urlEncoded 字符串 接收器的 URL 编码版本。 "https://quintschaf.com".urlEncoded "https%3A%2F%2Fquintschaf.com"
urlDecoded 字符串 接收器的 URL 解码版本。 "https%3A%2F%2Fquintschaf.com".urlDecoded "https://quintschaf.com"
extractedSeconds Int? 从接收器中提取秒数,格式为 hh:mm:ss/mm:ss/ss。 "00:02:15".extractedSeconds 135

SchafKit 还为字符串包含了合理的下标,使得像 "abc"[0...1] 这样的语法成为可能。

安装

Swift Package Manager

SchafKit 依赖于 Swift Package Manager,并通过将其添加为依赖项来安装。

许可

我们选择对 SchafKit 使用 CC0 1.0 Universal 许可。以下简短说明不具有任何法律含义,也不以任何方式凌驾于许可之上:CC0 1.0 Universal 许可赋予您在任何(商业或非商业)产品中使用或修改所有 SchafKit 代码的权利,而无需提及、许可或任何其他类型的麻烦。

待办事项