ios - 如何调试 APIService 的代码

标签 ios swift passcode

我是在 swift 中使用 API 创建登录的新手。我遵循了 Treehouse 的视频教程,但我使用了不同版本的 Xcode 和 swift。我不知道我会在这些代码中放入什么。希望您能帮助我,或者您能给我任何可以用来创建登录页面的引用资料,该登录页面将在文本字段中输入密码并提交以验证代码是否存在并将发布数据。太感谢了。 Error in the Image

当我点击修复时,出现了这些代码行

final class EventAPIClient: APIService {
func JSONTaskWithRequest(request: URLRequest, completion: (JSON?, HTTPURLResponse?, NSError?) -> Void) -> JSONTask {
    <#code#>
}

init(config: URLSessionConfiguration) {
    <#code#>
}


let  configuration: URLSessionConfiguration
lazy var session: URLSession = {
return URLSession(configuration: self.configuration)
}()

private let token: String

init(config: URLSessionConfiguration, APIKey: String) {
    self.configuration = config
    self.token = APIKey
}

convenience init(APIKey: String) {

    self.init(config: URLSessionConfiguration.default, APIKey: APIKey)
}
}

最佳答案

为了开始解决此问题,您需要查看 protocols是。

专注于与这种情况相关的信息,它们本质上定义了函数的签名(除其他外)。协议(protocol)的名称和函数签名留下了关于给定函数的实现应该是什么的线索。通过一个简单的例子可以很容易地说明这一点:

protocol MathematicalOperations {
    func add(_ int: Int, to int: Int) -> Int
}

class Calculator: MathematicalOperations {
    func add(_ intA: Int, and intB: Int) -> Int {
        return intA + intB
    }
}

// Usage
let calculator = Calculator()
let sum = calculator.add(15, and: 10)
print(sum) // 25

将其与您的情况联系起来。协议(protocol) APIService 定义了如下功能:

protocol APIService {
    func JSONTaskWithRequest(request: URLRequest, completion: (JSON?, HTTPURLResponse?, NSError?) -> Void) -> JSONTask
    init(config: URLSessionConfiguration)
}

您的 EventAPIClient 类告诉编译器它意味着遵守 APIService 协议(protocol):

final class EventAPIClient: APIService {

为了符合协议(protocol),EventAPIClient需要为APIService中的所有定义提供实现。

至于解决该问题,缺少一些有关 JSONTask 等定义的信息。但是,这里有一个示例实现,如果没有其他内容,它应该为您提供一个起点:

func JSONTaskWithRequest(request: URLRequest, completion: @escaping (JSON?, HTTPURLResponse?, NSError?) -> Void) -> JSONTask {
    let task = session.dataTask(with: request) { data, response, error in
        if let error = error {
            completion(nil, response, error as NSError?)
        } else if HTTPResponse.statusCode == 200 { // OK response code
            do {
                let json = try JSONSerialization.jsonObject(with: data!, options: []) as? JSON
                completion(json, response, nil)
            } catch let error as NSError {
                completion(nil, response, error)
            }
        } else {
            completion(nil, response, nil) // could create an error saying you were unable to parse JSON here
        }
    }
    return task as? JSONTask
}

init(config: URLSessionConfiguration) {
    self.configuration = config
    self.token = "APIKey" // put your default api key here, maybe from a constants file?
}

希望您觉得这有帮助:)

关于ios - 如何调试 APIService 的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51717826/

相关文章:

ios - UITableViewCell 没有按预期重新加载

ios - 在没有按钮点击 ios 的情况下显示 AdMob 插页式广告

ios - 检查 FaceID 是否启用

ios - UITableView 部分条件不起作用

ios - SKNode 内的 CoreGraphics 元素

ios - 覆盖 View ,但将输入向下传播到最低 z-index

ios - 对象在 iOS 中返回空描述

ios - 没有 Storyboard 时如何初始化自定义 ViewController?