Swift Playground的xcode符号导航器?

时间:2017-05-25 20:56:18

标签: swift xcode swift-playground

我在Swift Talk episode 8

上编码

我在使用资源结构时遇到了一段时间。

enum HttpMethod<Body> {
    case get
    case post(Body)
}

struct Resource<A> {
    let url: URL
    let method: HttpMethod<Data>
    let parse: (Data) -> A?
}

extension Resource {
    init(url: URL, method: HttpMethod<Any> = . get, parseJSON: @escaping (Any) -> A?) {
        self.url = url
        self.method = method.map { json in
            // TODO: try! is not safe here anymore
            return try! JSONSerialization.data(withJSONObject: json, options: [])
        }
        self.parse = { data in
            let json = try? JSONSerialization.jsonObject(with: data, options: [])
            return json.flatMap(parseJSON)
        }
    }
}

来自:

func pushNotification(token: String) -> Resource<Bool> {
    let url = URL(string: "")!
    let dictionary = ["token": token]
    return Resource(url: url, method: .post(dictionary), parse: { _ in
        return true
    })    //** my mistake was on this line (see below) 
}

然后我收到以下错误消息:

  

Networking.playground / Pages / Step 10.xcplaygroundpage:118:40:会员&#39;发布&#39;在&#39; HttpMethod&lt; Data&gt;&#39;生成类型&#39; HttpMethod&lt; Body&gt;&#39;的结果,但上下文需要&#39; HttpMethod&lt; Data&gt;&#39;

我花了一些时间才意识到我已经为Resource结构调用了成员初始化器:init(url:method:parse :),而我应该调用自定义初始化器:init(url:method:parseJSON:)
(注意:自从我们在扩展中添加自定义初始化程序后,成员初始化程序仍然存在)

回想起来,我想,如果我使用了Symbol Navigator,我可能会早点发现我的错误。但是在花了一些时间在Xcode之后,我无法弄清楚如何查看Swift Playground的符号导航器。它总是空着的。

我检查了我的其他Xcode swift项目,符号导航器正常工作。

有人知道我们怎么能让符号导航器在Xcode Swift Playground中正常工作?

0 个答案:

没有答案