代码库> 其他> TMOSmarty
TMOSmarty
关注
上传者:ponycui 分类:其他(Others)
查看次数:2278 下载次数:151
上传时间:2014-08-02 大小:60 B
Smarty原本是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

Smarty在PHP中的广泛使用,使得我们对Smarty移植到iOS抱有极大的兴趣,因此,我们编写了这一个开源库TMOSmarty。

TMOSmarty已经可以做到

1.嵌入式引用
嵌入式引用,可以将Model中的任意类型对象转换为NSString,并自动渲染到各个UI元素中。

2.自定义函数处理
自定义函数的使用,可以将一系统可复用的字符串处理方法进行封装,并使用极为简洁的方法进行调用。

3.Model/View联动(使用KVO)
过往,我们在Interface Builder与.m文件中需要创建的一堆IBOutlet引用,将不复存在,同时,借助Model/View联动技术,Model的变动将即时反馈到View中,而你,只需要一行代码即可完成一切操作。

使用TMOSmarty,可以解放你的双手,减少至少30%的无意义代码。同时,View(StoryBoard、Interface Builder)与Controller、Model的分离将更加彻底。




请耐心等候GIF图片加载,GIF视频展示了Smarty的最基础用法

cvpic('https://raw.githubusercontent.com/flymwy/myself/master/TMOSmarty/example_1.gif','','700','700')

1.首先,我们在Interface Builder中建立了一个UILabel,并将其Text设为myname:<{myName}>

2.然后使用一个UIViewController对此IB进行控制

3.初始一个Object,其中,Object内有相应数据,这就包括 myName 这一NSString属性

4.最后,我们在ViewDidLoad中执行[self.view smartyRendWithObject:self.myObject isRecursive:YES];

5.Run运行就可以看到效果




语法

1.所有需要被替换的变量都使用 <{}> 包裹

2.使用点语法作多级引用,支持NSObject、NSDictionary、NSArray的取值(以下例子以myObject表示绑定的Model)

例如 <{myName}> 相当于取myObject.myName的值 或 myObject[@"myName"]的值

例如 <{couple.myWife}> 相当于取myObject.couple.myWife的值

例如 <{myArray.1}> 相当于取 myObject.myArray[1]的值

例如 <{myArray.1.myName}> 相当于取 myObject.myArray[1][@"myName"]的值

3.取到的值,无论为任何类型,都将被转换成NSString,然后嵌入赋值

4.无须担心类型、nil或键值不存在而导致崩溃,因为Smarty已经为你判断一切情况




Smarty为你提供了Model/View绑定功能

当你声明一个UIView为Smarty绑定时,Model(数据源)将会被绑定

当被绑定的Model(数据源)变化时,View中的值将得以更新

以下的GIF图是一个例子

cvpic('https://raw.githubusercontent.com/flymwy/myself/master/TMOSmarty/example_2.gif','','700','700')




函数的使用是Smarty一大功能,使用函数,你可以为你的嵌入变量进行更多的处理

TMOSmarty已经内置了7+个函数

例如 length 函数,可以获取当前变量的长度

调用 <{myName|length}>

假如 myName 为 @"PonyCui",则上面的调用将被替换为7
收藏
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0
提示
sina weixin mail 回到顶部