Swift缩水版MJExtension - Reflect的基本使用

github:https://github.com/CharlinFeng/Reflect

直接拖拽Reflect文件夹到您的项目中即可,无任何第三方依赖!
文件夹结构说明:
.Coding 归档相关
.Reflect 反射核心包
.Dict2Model 字典转模型
.Model2Dict 模型转字典

这里使用plist作为数据源, plist存储的是一个数组, 数组中存储的是字典

plist的结构如下:

将plist数组中的每一个字典转换为模型, 代码如下:

RPTableViewController.swift:

import UIKit

class RPTableViewController: UITableViewController {

    var datas:[RPCityGroupModel] = Array()

    override func viewDidLoad()
    {
        super.viewDidLoad()

        let path = NSBundle.mainBundle().pathForResource("cityGroups", ofType: ".plist")
        let arr = NSArray(contentsOfFile: path!)
        for dict in arr! {
            self.datas.append(RPCityGroupModel.parse(dict: dict as! NSDictionary))
        }

        self.navigationItem.leftBarButtonItem = editButtonItem()
    }

    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int
    {
        return self.datas.count
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return self.datas[section].cities.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)

        cell.textLabel!.text = self.datas[indexPath.section].cities[indexPath.row]

        return cell
    }

    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?
    {
        return self.datas[section].title
    }

    override func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]?
    {
        var indexTitles: [String] = Array()
        for model in self.datas {
            indexTitles.append(model.title)
        }
        return indexTitles
    }

    override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
    {
        if editingStyle == .Delete {
            self.datas[indexPath.section].cities.removeAtIndex(indexPath.row)
            self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
        }
    }
}

RPCityGroupModel.swift:

这里要注意的是, 模型是继承于Reflect这个类的

import UIKit

class RPCityGroupModel: Reflect
{
    var cities: [String] = []
    var title: String = ""
}

gif:

时间: 2024-10-24 14:02:59

Swift缩水版MJExtension - Reflect的基本使用的相关文章

数据结构(八) AOV网的关键路径(Swift面向对象版)

上篇博客我们介绍了AOV网的拓扑序列,请参考<数据结构(七) AOV网的拓扑排序(Swift面向对象版)>.拓扑序列中包括项目的每个结点,沿着拓扑序列将项目进行下去是肯定可以将项目完成的,但是工期不是最优的.因为拓扑序列是一个串行序列,如果按照该序列执行项目,那么就是串行执行的.我们知道在一个项目中的一些子工程是可以并行来完成的,这也就类似我们的多线程.今天我们要解决的问题就是找出一个关键路径,是工期最优并保证工程的完成.什么是关键路径,我们在下方会进行详细介绍. 一.关键路径概述 在聊关键路

数据结构(五) 普利姆与克鲁斯卡尔的最小生成树(Swift面向对象版)

上篇博客我们聊了图的物理存储结构邻接矩阵和邻接链表,然后在此基础上给出了图的深度优先搜索和广度优先搜索.本篇博客就在上一篇博客的基础上进行延伸,也是关于图的.今天博客中主要介绍两种算法,都是关于最小生成树的,一种是Prim算法,另一个是Kruskal算法.这两种算法是很经典的,也是图中比较重要的算法了. 今天博客会先聊一聊Prim算法是如何生成最小生成树的,然后给出具体步骤的示例图,最后给出具体的代码实现,并进行测试.当然Kruskal算法也是会给出具体的示例图,然后给出具体的代码和测试用例.当

来实现一个缩水版Vuex

对 Vuex 源码进行浓缩,DIY 一个小型 Vuex 功能如下 通过 $store.commit 改变 $store.state 实现 strict model 源码约70行左右比较好理解,下面讲解一下两个比较重要的点. install Vue.use(Vuex)实际上调用的是 Vuex 的 install 方法,该方法在每个组件的 beforeCreate 钩子中为当前组件注入 $store,使所有组件的 $store 属性都指向同一个对象,也就是创建 Vue 实例时传入的 store 对象

【转】43个优秀的Swift开源项目推荐

作为一门集百家之长的新语言,Swift拥有着苹果先天的生态优势,而其在GitHub上各种优秀的开源项目也层出不穷.本文作者@SwiftLanguage从2014年6月苹果发布Swift语言以来,便通过跟踪.归纳.汇总持续更新<Swift语言指南>半年有余.近日,他站在个人的角度,将2014年Swift开源项目做了一个甄别.筛选. “轮子” 工具类 SwiftyJSON:GitHub上最为开发者认可的JSON解析类 Dollar.swift:Swift版Lo-Dash(或underscore)函

必须Mark!43个优秀的Swift开源项目推荐

作为一门集百家之长的新语言,Swift拥有着苹果先天的生态优势,而其在GitHub上各种优秀的开源项目也层出不穷.本文作者@SwiftLanguage从2014年6月苹果发布Swift语言以来,便通过跟踪.归纳.汇总持续更新<Swift语言指南>半年有余.近日,他站在个人的角度,将2014年Swift开源项目做了一个甄别.筛选. “轮子” 工具类 SwiftyJSON:GitHub上最为开发者认可的JSON解析类 Dollar.swift:Swift版Lo-Dash(或underscore)函

Swift 开源框架总结

苹果官方Swift文档<The Swift Programming Language> 苹果开发者Swift文档及介绍 网友整理的Swift中文文档< Apple Swift编程语言入门教程>中文版Apple官方Swift教程(Github协作翻译中) Apple Swift编程语言入门教程 Swift语言概览中文版 Swift英文文档markdown版 Swift开发视频教程[入门篇] letsswift 编译的Swift中文教程 Github上的Swift开源项目列表 国内第一

Swift学习之每日一tip (6) 单例

近日,在翻看以前写过的一些OC应用的时候,看到了OC的单例,然后暮然想要试着写一写Swift下的单例,于是,在经过一番波折后,终于将Swift下的单例写了出来. OC下的单例实现 栗子: + (instancetype)sharedNetworkTools { //定义一个任意类型的静态实例 static id instance; static dispatch_once_t onceToken; // 第一次进入dispatch_once中,onceToken == 0 // 进入过一次后,

非常全面的Swift学习资料整理

文章转载自我的个人博客原文链接 自言自语: 亿万千百十, 皆起于一 资料1 -教程类 官方文档中文翻译http://wiki.jikexueyuan.com/project/swift/ Github上的地址点我 Using Swift with Cocoa and Objective-C WWDC 2015 系统化的开发文档iOS Developer Library Swift 开源及跨平台开发swift.org 斯坦福课程Stanford University: Developing iOS

iOS开发笔记--43个在GitHub上的优秀Swift开源项目推荐

43个在GitHub上的优秀Swift开源项目推荐 原文:http://www.php100.com/html/it/biancheng/2015/0112/8329.html [导读] 拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷.本文作者站在个人的角度,将2014年Swift开源项目做了一个甄别.筛选,从工具.存储.网络.界面.框架到Demo以及完整应用等,满满的干 拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷.本文作者站在个人的角