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:

Swift缩水版MJExtension - Reflect的基本使用的更多相关文章
- swift kilo版代码更新
今天重新搭建swift服务器,git下代码后一时好奇,进入kilo/stable branch后,与四个月前下载的swift/kilo版本做了个比较.使用diff命令完成.发现代码还是略有区别. di ...
- vue 缩水版 双向绑定
function Observer(obj, key, value){ var dep = new Dep(); if (Object.prototype.toString.call(value) = ...
- 来实现一个缩水版Vuex
对 Vuex 源码进行浓缩,DIY 一个小型 Vuex 功能如下 通过 $store.commit 改变 $store.state 实现 strict model 源码约70行左右比较好理解,下面讲解 ...
- 算法与数据结构(八) AOV网的关键路径(Swift版)
上篇博客我们介绍了AOV网的拓扑序列,请参考<数据结构(七) AOV网的拓扑排序(Swift面向对象版)>.拓扑序列中包括项目的每个结点,沿着拓扑序列将项目进行下去是肯定可以将项目完成的, ...
- 算法与数据结构(七) AOV网的拓扑排序(Swift版)
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 算法与数据结构(二) 栈与队列的线性和链式表示(Swift版)
数据结构中的栈与队列还是经常使用的,栈与队列其实就是线性表的一种应用.因为线性队列分为顺序存储和链式存储,所以栈可以分为链栈和顺序栈,队列也可分为顺序队列和链队列.本篇博客其实就是<数据结构之线 ...
- swift开源项目精选
Swift 开源项目精选-v1.0 2016-03-07 22:11 542人阅读 评论(0) 收藏 举报 分类: iOS(55) Swift(4) 目录(?)[+] 转自 http: ...
- 43个优秀的Swift开源项目
作为一门集百家之长的新语言,Swift拥有着苹果先天的生态优势,而其在GitHub上各种优秀的开源项目也层出不穷.本文作者@SwiftLanguage从2014年6月苹果发布Swift语言以来,便通过 ...
- Swift - 开源框架总结
苹果官方Swift文档<The Swift Programming Language> 苹果开发者Swift文档及介绍 网友整理的Swift中文文档< Apple Swift编程语言 ...
随机推荐
- python 操作 mysql基础补充
前言 本篇的主要内容为整理mysql的基础内容,分享的同时方便日后查阅,同时结合python的学习整理python操作mysql的方法以及python的ORM. 一.数据库初探 在开始mysql之前先 ...
- Solr 单机配置
一. 准备软件 提前安装好Java1.8和Tomcat9 下载Solr6.1,官网位置:http://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/6 ...
- IOS动画总结
IOS动画总结 一.基本方式:使用UIView类的UIViewAnimation扩展 + (void)beginAnimations:(NSString *)animationID context ...
- BestCoder Round #36 [B] Gunner
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5199 先对树的高度排序,然后对每次射击高度二分查找即可,打过之后数目变为0. #include< ...
- 一个正整数N,拆成任意个正整数之和,怎样使这些数的乘积最大
网上看到了如标题所示的题目,就开始想如果用程序来算的话,那么它的算法是怎样的. 自己想了半天,第一感觉要用递归, 如先算出 当 n=1 max=1 当 n=2 max=1 当 n=3 max=2 .. ...
- 开个CS5.4编译编译,调试错误贴
记录各种编译,调试中遇到问题.
- android百度定位
package com.aihunqin.test; import android.app.Activity; import android.os.Bundle; import android.wid ...
- C51程序优化
1.指针: 对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高.但是在Keil中则相反,使用数组比使用的指针生成的代码更短.通常使用自加.自减指令和复合赋值表达式(如a-=1及a+=1 ...
- 用Doxygen生成文档
我是生成C/C++的文档,输出html格式的文档.就不做成CHM了. 注释要这种写:(当然,有数种注释风格,选择任意你喜欢的就行) /** * * 一系列的doxygen的 command * * * ...
- 使用objdump objcopy查看与修改符号表
使用objdump objcopy查看与修改符号表动态库Linuxgccfunction 我们在 Linux 下运行一个程序,有时会无法启动,报缺少某某库.这时需要查看可执行程序或者动态库中的符 ...