我正在尝试集成Gloss来进行json解析,但是我得到了很多非意义错误。
我安装了pod安装它,我经历了以下事项:
首先,当我导入它时,我得到了
:Cannot import underlying modules glossy
,我不知道如何,但是在github repo中复制粘贴GlossExample项目中的示例后,它就消失了。
第二,如果我使用:struct Repo: Glossy
我收到错误Repo doesn't conform to protocols Decodable and Encodable
,但代码是从示例中粘贴的,并且存在方法init?(json: JSON)
和func toJSON() -> JSON?
< / p>
然后我尝试使用struct Repo: Decodable
并将此功能用于解码器:
init?(json: JSON) {
let repoId: Int = "id" <~~ json
我收到以下错误:
35: Binary operator '<~~' cannot be applied to operands of type 'String' and 'JSON'
最后我说好了,我不会使用重载运算符,而是正常的Decoder
类:
init?(json: JSON) {
self.repoId = Decoder.decodeURL("id")(json)
}
我得到了:
Cannot convert value of type 'JSON' to expected argument type 'JSON' (aka 'Dictionary<String, AnyObject>')
欢迎您提供帮助和解答!
答案 0 :(得分:1)
- 首先,当我导入它时,我得到:
Cannot import underlying modules glossy
,我不知道如何,但是在github repo中复制粘贴GlossExample项目中的示例后,它就消失了。
这是一个在Xcode中发生的问题,有一些框架,但只是清理代码或直接运行它通常会消除警告。否则,它可能与使用较旧版本的Xcode有关。
如果我使用{h>
struct Repo: Glossy
,我会收到错误Repo doesn't conform to protocols Decodable and Encodable
,但代码是从示例中粘贴的,并且存在方法init?(json: JSON)
和func toJSON() -> JSON?
这意味着您的struct
不符合这两种协议。来自Glossy declaration:
/**
Convenience protocol for objects that can be
translated from and to JSON
*/
public protocol Glossy: Decodable, Encodable { }
因此,Glossy协议继承了Decodable和Encodable,这意味着您需要为两个协议实现协议功能,而不仅仅是toJSON() -> JSON?
。
然后我尝试使用
struct Repo: Decodable
并将此功能用于解码器:...
您需要首先在结构中声明常量,并在init中反序列化JSON并将值设置为常量:
struct Repo: Decodable {
let repoId: Int
init?(json: JSON) {
guard let repoId: Int = "id" <~~ json { else return nil }
self.repoId = repoId
}
}