MochaUtilities 0.7.1

MochaUtilities 0.7.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2019年1月
SPM支持 SPM

Gregory Sholl e Santos 维护。



  • 作者
  • Gregory Sholl e Santos

MochaUtilities

Version License Platform

MochaUtilities 是一个用 Swift 编写的库,旨在帮助 iOS 开发者在编码期间。

此 README 编写仍在进行中,因此并未完全记录所有可用类和方法。

特性

MochaUtilities 设计用来在尽可能多的常见需求上帮助 iOS 开发者。在构建 iOS 项目期间,开发者通常需要相同的样板代码。这个库旨在减少这种代码。它不使用 CocoaPods 中的任何其他库作为依赖,因为它的目的是帮助解决更多一般的编码问题。

请注意,为了使用 MochaUtilities 的任何功能,文件头部必须包含 import MochaUtilities 必须

大多数(如果不是所有)Util 类的公共方法都是静态的。如果不是,它将在此处明确描述。

MochaUtilities 分为以下子库:

基本

基本子库包含了一些最基本的类和扩展,就像它的名字所暗示的那样。这个特定的子库可以(但不应该)单独使用,因为它不向用户提供太多功能。

MochaException

MochaException 枚举类型内部用于 MochaUtilities,以便更简洁地表示可能发生的问题。它与 Swift 的 Error 类型相关联,因此可以作为错误抛出。

MochaException 包含以下可能的值

  • ioException:当 HttpHelper 遇到问题(除了下文中描述的 appSecurityTransportException 错误之外)时使用。
  • fileNotFoundException:当在应用程序的包或文档中找不到指定的文件引用或路径时使用。主要在 BundleUtilDocumentsUtil 类中使用。
  • appSecurityTransportException:当 HttpHelper 请求数据,但无法通过项目中的 App Security Transport 在 Info.plist 中指定的值访问给定的 URL 时使用。
  • notImplemented:当需要先前的方法或类继承但尚未实现时使用。
  • domainException:当 MochaUtilities 中的任何值或转换无效时使用。此特定值可能在 1.0 版本中删除。
  • genericException:当发生未指定的错误时使用。

String+Basic

是用于 MochaUtilities 实现的 String 类的扩展。它包含只读属性 lengthisNotEmpty,以及方法 equalsIgnoreCase(_:).

length 属性返回预期中的 String 长度。当此 Pod 支持 Swift 4 时可能会删除此属性。 isNotEmpty 简单地返回字符串是否为空。尽管可以通过 !someString.isEmpty 访问此信息,但这有助于编写更易于阅读的代码。

let lenth = "my_length".length
//length = 9

"".isNotEmpty
//false

"Non Empty String".isNotEmpty
//true

equalsIgnoreCase(_:) 方法在不考虑大小写的情况下将 String 本身与另一个给定的 String 进行比较。此方法还可以比较非英文单词。

let someText = "lorem ipsum"
let otherText = "Lorem Ipsum"
print(someText.equalsIgnoreCase(otherText))
//prints true since both Strings are essentially the same except one is capitalized

let heart = "coração"
let hearts = "corações"
print(heart.equalsIgnoreCase(hearts))
//prints false since both Strings varies at the end

MochaLogger

是 MochaUtilities 使用默认的日志类。它使用 Singleton 模式。它的公共方法是 changeTag(to:)removeTag()log(_:)。默认使用的标签是 Mocha

通过 MochaLogger 记录消息时,它仅在未调用 removeTag() 的情况下添加前缀 [<given_tag>]。因此,默认情况下,如果记录 message,控制台将打印 [Mocha] message

MochaLogger.log("This is a test.")
//prints [Mocha] This is a test.

MochaLogger.changeTag(to: "New Tag")
MochaLogger.log("Trying out a new tag.")
//prints [New Tag] Trying out a new tag.

MochaLogger.removeTag()
MochaLogger.log("Works just like print.")
//prints Works just like print.

巴西

巴西子模块为巴西开发者提供了特定的功能。

CpfUtil

这个类负责对字符串应用或移除个人身份信息码(CPF)的掩码。它还可以检查提供的字符串是否是有效的CPF。

对于掩码和取消掩码字符串,请分别使用 mask(_:)unmask(_:)。如果提供的值无法进行掩码或取消掩码,则这些方法将返回空字符串。

还有一个方法可以检查提供的字符串是否有应用掩码。

let masked = CpfUtil.mask("12345678900")
//masked equals 123.456.879-00

let unmasked = CpfUtil.unmask("123.456.789-00")
//unmasked equals 12345678900

如方法名所示,isValid(_:) 方法用于检查提供的字符串是否是有效的CPF。如果提供的字符串是nil、空或无法转换为数值,则返回 false

let maskedCheck = CpfUtil.isValid("000.000.000-00")
//maskedCheck is true

let unmaskedCheck = CpfUtil.isValid("00000000000")
//unmaskedCheck is also true

核心

核心子模块提供了iOS编程期间使用的最常用功能。

String+Core

UIColor+Core

偏好设置

AppUtil

BundleUtil

DateUtil

DeviceUtil

DocumentsUtil

FileUtil

KeyboardUtil

NavigationBarUtil

NumberUtil

NumberUtil类用于在String?(可选字符串)格式中处理数值。它可以将值转换为特定的数值类型。

对于转换,可用的方法包括toInteger(_:, with:)toFloat(_:, with:)toDouble(_:, with:)toNumber(_:, with:)。如果给定的String?为nil或无法转换为目标数值类型,将返回默认值。如果没有传递默认值,则默认为零。

以下示例展示了toInteger(_:, with:)方法的工作方式。上述其他方法与它们各自的类型类似工作。

let integerString = "123"
let integer = NumberUtil.toInteger(integerString)
//integer is an Int with value 123

let nonIntegerString = "4a5"
let defaultValue = NumberUtil.toInteger(nonIntegerString)
//since no extra argument was given and nonIntegerString cannot be converted to an integer,
//defaultValue will be 0 (zero)

let anotherDefaultValue = NumberUtil.toInteger(nonIntegerString, with: -1)
//since nonIntegerString cannot be converted to an integer,
//anotherDefaultValue will be -1

OrientationUtil

StatusBarUtil

TabBarUtil

NotificationUtil

Images

Images子组件帮助解决一些与图片相关的问题。

UIColor+Image

ImageUtil

PrintScreenUtil

网络

网络子类包含了一些旨在帮助处理与互联网相关的类,例如 HTTP 请求。

MochaEmailAttachment

HttpHelper

HttpHelper 用于处理 HTTP/HTTPS 请求和响应。它是在构建者模式下的。构建者是 HttpHelper 类的内嵌类。以下代码演示了如何进行简单的 GET 请求。

let handler = { (data: Data?, error: Error?) in
//handle response information
}

//directly get the reference to HttpHelper
let httpHelper = HttpHelper.builder.url("http://www.google.com").completionHandler(handler).build()
httpHelper.get()

使用前应考虑以下事项

  • url(_: String)completionHandler(_: @escaping HttpCompletionHandler) 构建者方法对所有请求是必需的。如果不设置,请求会失败或不会返回接收到的响应。
  • HttpCompletionHandler 类型被定义为闭包 (_ data: Data?, _ error: Error?) -> Void
  • 请求的 contentType 默认为 application/json
  • 请求的 timeout 默认为 60 秒。
  • 请求的 encoding 默认为 UTF-8。
  • 其他可能的配置有 parameters(_:)header(_:)basicAuth(username:, password:)certificate(_:, with:)trustAll(_:)hostDomain(_:)

要将基本身份验证头设置到您的 HTTP 请求中,请使用以下方法 basicAuth(username: String, password: String)

let httpHelper = HttpHelper.builder.url(someUrl).completionHandler(someHandler)
  .basicAuth(username: "request_basic_auth_usr", password: "request_basic_auth_pwd").build()
httpHelper.get()

在使用 build() 方法之前,如有必要,请保留对 HttpHelper.Builder 类的引用。可能需要根据某些参数配置请求。例如:

func doHttpRequest(needsBasicAuth: Bool, addDefaultHeader: Bool) {
  let handler = { (data: Data?, error: Error?) in
    //handle response information
  }
  //directly get the reference to HttpHelper
  let builder = HttpHelper.builder.url("http://www.google.com").completionHandler(handler)
  if needsBasicAuth {
    builder.basicAuth(username: "request_basic_auth_usr", password: "request_basic_auth_pwd")
  }
  if addDefaultHeader {
    builder.header(["default_header_key": "default_header_value"])
  }
  ...
  let httpHelper = builder.build()
  httpHelper.get()
}

随着文档的增长,将会包含更多示例。

EmailUtilDelegate

用于与调用类和 EmailUtil 通信的协议。其方法包括 onEmailSuccess()onEmailCancelled()onEmailFailed(),都必须强制实现。

BrowserUtil

要打开设备的默认浏览器,请使用 openUrl(_: String?)。如果给定的 String 为 nil 或无效,则不执行任何操作。

@IBAction func onClickOpenBrowser(sender: Any?) {
  let url = "http..."
  BrowserUtil.openUrl(url)
}

EmailUtil

软件要求

  • iOS 11.0+
  • Xcode 8.1+
  • Swift 4.2+

安装

MochaUtilities 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行:

pod "MochaUtilities"

如果只需要其中一个特定的模块,请在 Podfile 中添加以下行:

pod "MochaUtilities/<NAME_OF_MODULE>"

有关可用模块的更多信息,请参阅 功能 部分。

贡献

如果您有任何建议、改进或问题要提交(无论是关于代码还是此README),请随时联系我或发送一个pull请求。

此库遵循Swift风格指南。在提交任何代码之前,请验证它是否也遵循此指南。如果您发现任何不符合指南的已提交代码,也请随时联系我或发送pull请求。

仅接受英语提交的commits。

作者

Gregory Sholl e Santos

[email protected]

许可证

MochaUtilities遵循MIT许可证。有关更多信息,请参阅LICENSE文件。