diff --git a/README.md b/README.md
index ae5bdbc..8ad6a99 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-SwiftJSONModeler是一个Xcode插件,一键转换json字符串Swfit模型,一键转化 YApi 平台接口为模型,并且自动引入注释。
+SwiftJSONModeler是一个Xcode插件,一键转换json字符串为Swfit模型,一键转化 YApi 平台接口为模型,并且自动引入注释。
* 支持struct, class
* 支持单json转模, 多层嵌套 json
* 支持YApi RAW或接口id解析转模,并且自动引入 YApi 平台注释和兼容数据类型
@@ -6,11 +6,12 @@ SwiftJSONModeler是一个Xcode插件,一键转换json字符串Swfit模型,
* 支持自定义模型前缀和后缀
* 可设置隐式和显示可选类型,默认显示可选`?`(不使用则为隐式可选`!`)
* YApi 支持按照自定义路径解析模型,自动解析子类型
+* 导入导出配置plist配置,以便团队共享。
## json 转Swfit模型
-复制单json, 一步转为模型。
+复制json字符串, 一步转为Swift模型,支持多层嵌套自动识别。
![运行效果](./Sources/example.gif)
@@ -97,7 +98,7 @@ struct HKSubJsonModel: HandyJSON {
如果无法预览查看[Source/YApiRAW.gif](./Sources/YApiRAW.gif)
-如果你使用YApi接口平台,我们支持两种方式,通过接口 Id)和 Raw 数据转模。一键转为模型,并且自动根据YApi为模型引入注释。
+如果你使用YApi接口平台,我们支持两种方式,通过接口 Id和 Raw 数据转模。一键转为模型,并且自动根据YApi为模型引入注释。
### 通过Id转模
@@ -144,7 +145,10 @@ struct HKSubJsonModel: HandyJSON {
再将应用移动到应用程序, 重启Xcode即可使用。
-> Tip:如果重启Xcode之后在Editor中还没看见插件选项,请选择系统设置-> 扩展->Xcode Source Editor中对应插件是否导入
+### 注意事项
+
+1. 安装弹出安全提示,选择系统设置 -> 安全性与隐私 -> 通用 点击允许打开该软件即可。
+2. 如果重启Xcode之后在Editor中还没看见插件选项,请选择系统设置-> 扩展->Xcode Source Editor中对应插件是否勾选
## 设置
SwiftJSONModeler提供多种自定义可选设置,可通过插件的Config选项进行设置。
@@ -169,6 +173,16 @@ SwiftJSONModeler提供多种自定义可选设置,可通过插件的Config选
![](./Sources/mutilToken.png)
+> 多 token 接口无法转模问题
+>
+> 通过 id 转模,配置多个 token 项目,可能会存在某个项目无法通过 id 砖模型,原因 YApi 平台的 token 无法获取到相应的json数据.
+>
+> 解决办法: 使用其他项目 token 尝试
+
+设置通过 plist 文件保存,可以导入导出。
+
+> Tips: plist 文件还有其他未展示的设置, 比如默认设置 String 类型为空字符串等
+
## 设置快捷键
可以给插件设置快捷键,快速转换模型
diff --git a/SwiftJSONModeler For Xcode.xcodeproj/xcuserdata/yibin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SwiftJSONModeler For Xcode.xcodeproj/xcuserdata/yibin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index 149c10a..f44d4e4 100644
--- a/SwiftJSONModeler For Xcode.xcodeproj/xcuserdata/yibin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/SwiftJSONModeler For Xcode.xcodeproj/xcuserdata/yibin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -180,5 +180,69 @@
landmarkType = "7">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SwiftJSONModeler For Xcode/YApi/YApiCreator.swift b/SwiftJSONModeler For Xcode/YApi/YApiCreator.swift
index 4c29646..6865bae 100644
--- a/SwiftJSONModeler For Xcode/YApi/YApiCreator.swift
+++ b/SwiftJSONModeler For Xcode/YApi/YApiCreator.swift
@@ -164,7 +164,7 @@ class YApiCreator {
if yapiObject.key != nil {
name = yapiObject.key!.upperCaseFirst()
}
- let des: String = yapiObject.des ?? "<#描述#>"
+ let des: String = yapiObject.des ?? ""
var keyword = keyStruct
if commandIdentifier.contains(keyStruct) {
keyword = keyStruct
@@ -174,7 +174,9 @@ class YApiCreator {
name = config.prefix + name + config.subffix
let parent = config.parent
var objctLines: [String] = []
- objctLines.append("/// \(des)")
+ if !des.isEmpty {
+ objctLines.append("/// \(des)")
+ }
if parent.isEmpty {
objctLines.append("\(keyword) \(name) {")
} else {
diff --git a/SwiftJSONModeler For Xcode/YApi/YApiRequest.swift b/SwiftJSONModeler For Xcode/YApi/YApiRequest.swift
index 7ec27f4..4332b56 100644
--- a/SwiftJSONModeler For Xcode/YApi/YApiRequest.swift
+++ b/SwiftJSONModeler For Xcode/YApi/YApiRequest.swift
@@ -55,7 +55,7 @@ class YApiRequest {
var request = URLRequest(url: URL(string: url)!, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 30)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
-
+ print(request)
let session = URLSession(configuration: .default)
let task = session.dataTask(with: request) { (data, response, error) in
if error != nil {
@@ -74,7 +74,16 @@ class YApiRequest {
let dataStr = String(data: data, encoding: .utf8)
print("____dataStr")
print(dataStr)
- guard let json = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any], let code = json["errcode"] as? Int, code == 0, let dataDic = json["data"] as? [String: Any], let resBody = dataDic["res_body"] as? String else {
+ guard let json = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] else {
+ errorCenter.message = "获取数据 json 解析异常"
+ return nil
+ }
+ guard let code = json["errcode"] as? Int, code == 0, let dataDic = json["data"] as? [String: Any], let resBody = dataDic["res_body"] as? String else {
+ var error = "获取接口数据异常"
+ if let message = json["errmsg"] as? String {
+ error = message
+ }
+ errorCenter.message = error
return nil
}
let raw = resBody.replacingOccurrences(of: #"\""#, with: "\"")