测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年9月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Undead1116 维护。
Coding For Plist 是一种特殊的配置方法,使用 plist 文件来配置视图模块,而不是调整项目中所有的代码。
看看我们每天遇到的情况,我们从 API 服务器获取了一些 JSON 数据,然后我们需要手动将其转换为我们的视图。
例如创建模型、绑定模型、为 tableView 数据源创建数组等工作流程,让我每天都很疯狂。
…
那么对于每一行生成一个对象模型怎么办?我们有一些像左标题、右标题、颜色等元素。
struct ConfigRow
{
// left title
var key : String!
// right title
var value : String!
var sortOrder : Int = 0
var color : String = ""
}
我们不是在模型或 ViewModel 中添加配置逻辑,而是在项目中创建一个 plist 文件。然后反序列化 plist 并将其转换为视图的数据源。
所以我们可以为 tableView 数据源获取一个 [ConfigRow] 数组。
每次我们想要修改标题、颜色甚至排序时,只需要修改 plist 文件就足够了!。
我们可以使用如下方式在单元格中填充标签:
leftTitle.text = model.value(forKey : row.value)
然后使用一些常用的方法使用 KVC 填充标签,但对于复杂的字符串值怎么办?
描述:MemberId + MemberDescription
描述标签可能包括两个字段:memberId 和 description。但正如我们之前提到的,只修改 plist 文件即可更改我们的 UI 和模型。
那么就来 CodingForP:我们可以这样配置 plist:[图片链接]
而且像:*&xxxx&*,*$xxxx$* 这样的关键字将自动替换为模型中的值。
在 CodingForP 中,如果您想使用它修改视图上的文本/颜色等,您唯一需要做的事情就是修改您的 plist 文件,而不是项目中任何代码!
*& xxxx &*
基本格式,xxx 可以是任何密钥
*$ xxxx $*
货币格式,xxx可以是任何需要显示为货币的密钥,例如工资。
<| xxxx |>
可空格式,xxx可以是上述任何格式,例如 <| 学生ID : \*& sId &* |>
,如果 sId 为空,则 <| 和 |> 之间的整个表达式将为空,因此错误显示如学生ID: “” 可以通过此格式修复。
*=
可以使用此模式设置默认值。例如: \*& sId \*= 998 &*
,如果 sId 为空,表达式将为 998,而不是 null,因为你设置了默认值 - 998
JSON
let sampleSource = ["userName" : "harly", "userId" : "123", "price" : "" , "salary" : 5000]
CodingForP 表达式
-p \*&userId&* \*&userName&* 's salary is \*$salary$\*
转换后
Harly 123 's salary is 5,000.00元
####Cocopods: CodingForP 通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile
pod install CodingForP
然后您可以直接调用函数
func smartTranslate(_ plistString : String , fromLazyServerJson serverDic : [String : AnyObject])
然后 plistString
应该是您的 plist 表达式,返回值将是生成后的预期结果。