US2MapperKit 0.2.0

US2MapperKit 0.2.0

测试经过测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2015年9月
SPM支持SPM

由Anton Doudarev、Matt Isaacs、Anton Doudarev维护。



  • Anton Doudarev

US2MapperKit

alt tag

CSMapperMogenerator 的启发,US2MapperKit是一个非常轻量级的映射框架,专门为 Swift 1.2 和 Swift 2.0 设计。

与之前的框架不同,之前的框架是开发者手动创建对象模型,然后稍后再用映射框架进行适配,而US2MapperKit采用了一种以映射为先的方法。通过早上映射到字典数据,US2MapperKit根据映射生成模型对象,并允许通过 WWDC 上关于 面向协议编程 的讲座得到启发进行扩展。

核心概念

alt tag

如上所述的简单示例显示了US2MapperKit的内部工作原理。在这个例子中,我们将尝试将一个以字典形式返回的Person对象进行映射。第一步是手动生成一个表示返回数据的plist。这个plist定义了属性、数据类型、与响应字典相关联的映射键以及需要应用任何转换。一旦定义好,构建时脚将会生成两个模型对象文件,以表示模型映射。

图中生成的第一个类代表了内部的 _Person.swift 类,它包含脚本生成的属性定义和两个初始化器,一个是必需的,另一个是可失败。生成的可失败的初始化器接受一个 Dictionary<String, AnyObject> 输入值,该值被解析为模型。内部文件的目的在于支持框架映射响应数据,开发者不应修改该文件,因为脚本将在每次构建项目时重新生成它。

生成的第二个类是 Person.swift,它继承自内部的 _Person.swift 类。这为开发人员在开发过程中需要添加任何自定义逻辑、属性或协议实现提供了一种方式。这个类只会生成一次,在构建任务中永远不会被覆盖。因此,更新模型映射不会影响外部类中定义的任何逻辑。

功能

  • 通过.plist文件自动生成模型对象
  • 支持可选和非可选的 Boolean:
    • String
    • Int
    • Double
    • Float
    • Bool

  • 支持以下集合的支持:
    • Array<AnyObject>
    • Dictionary

  • 复杂数据类型支持(独立使用或在集合中使用)
  • 默认值定义
  • 映射嵌套值
  • 自定义转换

基本使用

根据安装说明配置

  1. 创建一个plist模型映射并将其放置在安装时定义的映射文件夹中。
  2. 构建目标,进入安装过程中定义的输出目录,并将生成的文件添加到项目中。
  3. 将数据映射到一个实例,使用US2MapperKit生成的带有Dictionary数据的可失败初始化器来解析。

    let newInstance = TestModelObject(dataDictionary)
    

示例

以下是US2MapperKit支持的特性的示例列表。每个示例都提供了如何设置模型映射文件的概述,以及框架中预包装脚本的输出示例。

故障排除

未来增强

  • 映射继承(配置以从NSManagedObject / Realm Object继承)
  • Xcode 插件

许可

 The MIT License (MIT)  

 Copyright (c) 2015 ustwo studio inc (www.ustwo.com)  

 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:  

 The above copyright notice and this permission notice shall be included in all
 copies or substantial portions of the Software.  

 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.