SLazeKit

Language License CocoaPods Carthage

SLazeKit 是一个易于使用的 Swift restful 扩展和类的集合。不要花费数小时编写代码来将你的 rest api 请求映射到模型和 CoreData 序列化。停止浪费你的时间!

SLazeKit 允许你

class func getRequest(for modelId: String, success: @escaping ((Model?) ->()), failure: (() ->())? = nil) throws {
    let _ = ResponseModel.get(path: PathPattern.model.patternToPath(with: ["modelId":modelId])) { (response, result, error) in
    guard response?.urlResponse?.statusCode == 200 && error == nil else {
        failure?()
        return
    }
    success(try result?.serialized(SLazeKit.newBackgroundContext()) as? Model)
    }
}

如果 ResponseModel 符合 EntityMapping 协议,它将与 CoreData 同步。 这意味着如果模型对象已存在,它将更新它或创建新实例并使用响应数据填充 NSManagedObject。 你可以通过以下方式序列化你的响应以在给定上下文中接收 CoreData 对象

try result?.serialized(NSManagedObjectContext) as? Model)

调用此方法简单查询之前通过给定对象 id 同步的 NSManagedObject

模型示例

简单 Object.swift 高级 Model.swift

如果需要任何其他配置,你可以使用 Laze

//Laze<C: LazeConfiguration, D: Decodable>
Laze<Default, ResponseModel>.get( // Default configuration, result in ResponseModel model
SLazeKit<Default>.get( // Default configuration, no result model
ResponseModel.get( // Default configuration, result in ResponseModel model

🔧 安装

CocoaPods

将行 pod "SLazeKit" 添加到你的 Podfile

Carthage

将行 github "shial4/SLazeKit" 添加到你的 Cartfile

手动

克隆 repo 并将文件夹 SLazeKit 拖到你的 Xcode 项目中。

Swift Package Manager

将行 .package(url: "https://github.com/shial4/SLazeKit.git", from: "0.2.1"), 添加到你的 Package.swift

iOS 项目中的 Swift Package Manager: 此项目演示了一种使用 Swift Package Manager (SPM) 管理 iOS 项目依赖项的工作方法。

如何使用 SPM v4 管理 iOS 依赖项的示例

💊 用法

为了获得积极的体验,你应该首先配置 SLazeKit

默认配置中的 SLazeKit 使用符合 LazeConfiguration 协议的 Default 类。 我建议扩展 Default 配置。 此外,如果你的项目中有多个 API。 你可以通过创建你自己的符合 LazeConfiguration 协议的对象来创建任意数量的配置方案。

import SLazeKit

extension Default {
    //Provide base path for your API requests.
    open class var basePath: String? { return "www.yourdomain.com" }
    //Additional you can set port for your requests.
    open class var basePort: Int? { return 8040  }
    //You can provide your own instance of JSONDecoder.
    open class var decoder: JSONDecoder { return JSONDecoder() }
    //You can customize instance of URLSession in here.
    open class var urlSession: URLSession { return URLSession.shared }
    
    //If you feel like to set header dor requests do it in here.
    open class func setup(_ request: URLRequest) -> URLRequest {
        var request: URLRequest = request
        request.setValue("Your token", forHTTPHeaderField: "X-Access-Token")
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        return request
    }
    //If you feel like to monitor response. You can do it in here.
    open class func handle(_ response: HTTPURLResponse?) {
        if response?.statusCode == 401 {
            Client.logout()
        }
    }
    
    /// Method dedicated to be use for synchronize object into persisten store
    ///
    /// - Parameter obj: encoded object
    /// - Throws: error occured during the process
    open static func synchronize(_ obj: Any) {}
}

⭐ 贡献

欢迎为本项目做出贡献! :)

❓ 问题

只需在 GitHub 上创建一个 issue。

📝 许可

本项目已在 MIT 许可下发布。