HFUtility 2.0.13

HFUtility 2.0.13

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年4月
SwiftSwift 版本3.0
SPM支持 SPM

HFCoreUI 维护。



 
依赖
TinyLog>= 0
SwiftKeychainWrapper>= 0
 

HFUtility 2.0.13

  • .

HFUtility

示例

要运行示例项目,请克隆仓库,然后首先从 Example 文件夹中运行 pod install

常见

  • 要在其他 Swift 标志处于调试模式且 DEBUG 标志存在时打印日志,请将以下脚本附加到 Podfile 中。

post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == 'HFUtility'
            target.build_configurations.each do |config|
                if config.name == 'Debug'
                    config.build_settings['OTHER_SWIFT_FLAGS'] = '-D' 'DEBUG'
                    else
                    config.build_settings['OTHER_SWIFT_FLAGS'] = ''
                end
            end
        end
    end
end

现在您可以使用 log、logw、loge 任意打印敏感的日志。

  • 有时您需要将可空对象强制转换为数字(CGFloat、Float、Int、Bool),只需按如下所示调用即可。

if boolean(view?.hidden) {
  // do your fantastic job
}

if boolean(view?.hidden, defaultValue: false) {
  // do your fantastic job
}

if integer(view?.subviews.count) > 0 {
  // do your fantastic job
}

if integer(view?.subviews.count, defaultValue: 0) > 0 {
  // do your fantastic job
}

if cgfloat(view?.frame.size.width) <= self.view.width {
  // do your fantastic job
}

if cgfloat(view?.frame.size.width, defaultValue: self.view.width) <= self.view.width {
  // do your fantastic job
}

工具

  • HFAsync 提供了一种简单的方法来运行异步任务并接收回调通知。

HFAsync.invokeAsync(

  1,  // initial delay interval before start worker closure 

  worker: {

    // do your job async

  }, completion: {

    // notify or update UI, this closure gonna be called in main thread.

})

  • HFVersion 提供了一种简单的方法来比较版本字符串

HFVersion.systemVersionEqualTo("9.3")

HFVersion.systemVersionGreaterThan("9.3")

HFVersion.systemVersionGreaterThanOrEqualTo("9.3")

HFVersion.systemVersionLessThan("9.3")

HFVersion.systemVersionLessThanOrEqualTo("9.3")

HFVersion.versionEqualTo("9.3", comparedTo: "9.2")

HFVersion.versionGreaterThan("9.3", comparedTo: "9.2")

HFVersion.versionGreaterThanOrEqualTo("9.3", comparedTo: "9.2")

HFVersion.versionLessThan("9.3", comparedTo: "9.2")

HFVersion.versionLessThanOrEqualTo("9.3", comparedTo: "9.2")

本地数据管理

  • HFLocalStorage 提供了一种简单的方式保存和加载对象

要将对象保存到或从本地字典中加载(假设您有一个类似下面的对象)


let storage = HFLocalStorage(fileName: "test.db", directoryType: .LibraryDirectory)

storage.saveObject(["Any", "Kinds", "Of", "NSCoding", "Objects"], "TEST_KEY") // save

let array = storage.loadObject("TEST_KEY") as? [String] // load

  • NSKeyedArchiver 和 NSKeyedUnarchiver 扩展提供了简单的归档和解档对象的方法

要归档遵循 NSCoding 协议的对象


NSKeyedArchiver.archiveObject("path/to/file", object: objectToArchive, key: "OBJECT_KEY")

从文件中解档归档的 NSCoding 遵循对象


let unarchivedObject = NSKeyedArchiver.archiveObject("path/to/file", key: "OBJECT_KEY")

数据处理

  • HFJSON 提供了一种简单的方法从字符串获取 JSON 对象,反之亦然。

假设您从服务器或其他地方获取 JSON 字符串


let dict = HFJSON.jsonFrom(jsonResponseText)

let jsonString = HFJSON.stringFrom(dict)

  • Dictionary+HF 提供了一种简单的方法从复杂的字典中选择对象

假设给定以下包含数据的字典


{

    "productList": [{

        "productId": 0,

        "productName": "Product 0",

        "components": [{

            "componentId": 100,

            "componentName": "Component 100",

            "parts": [{

                "partId": 1000,

                "partName": "Part 1000"

            },{

                "partId": 2000,

                "partName": "Part 2000"

            }]

        }

    }
}

要获取第一产品的第一组件的第二部分的名称,只需调用以下扩展方法即可。


// where jsonDict is an object type of [String: AnyObject]?

let partName = jsonDict?.objectForKeyPath("productList[0].components[0].parts[1].partName") as? String

NSLog("partName: \(partName)")    // will get "Part 2000"

加密器

此功能已移至另一个仓库,点击以下链接。

https://github.com/DragonCherry/HFSecurity

要求

安装

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

pod "HFUtility"

作者

DragonCherry, [邮箱地址保护]

许可证

HFUtility 在 MIT 许可证下可用。更多信息请参阅 LICENSE 文件。