gpt4 book ai didi

swift - 快速发出 HTTP 请求和简单例份验证时遇到问题

转载 作者:搜寻专家 更新时间:2023-11-01 05:42:12 24 4
gpt4 key购买 nike

我是 obj c/swift 的新手,正在尝试连接到 RESTful api 并不断收到 fatal error “在展开可选值时意外发现 nil”:

var request = NSURLRequest(URL: url!)

我正在使用这个例子来完成任务 - https://stackoverflow.com/a/24495548/4375598 .我正在尝试使用用户名和密码登录到 url 中带有私有(private) api_key 的应用程序。

import UIKit

class ViewController: UIViewController, NSURLConnectionDataDelegate {

@IBOutlet weak var usernameTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!


@IBAction func signInButton(sender: AnyObject) {
var url = NSURL(string: "MY URL")
var request = NSURLRequest(URL: url!)
var connection = NSURLConnection(request: request, delegate: self, startImmediately: true)

}

func connection(connection: NSURLConnection, willSendRequestForAuthenticationChallenge challenge: NSURLAuthenticationChallenge!) {
if challenge.previousFailureCount > 1 {

} else {
let creds = NSURLCredential(user: usernameTextField.text, password: passwordTextField.text, persistence: NSURLCredentialPersistence.None)
challenge.sender.useCredential(creds, forAuthenticationChallenge: challenge)
}
}

func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse) {
let status = (response as NSHTTPURLResponse).statusCode
println("status code is \(status)")
}

最佳答案

您使用的 URL(“我的 URL”)的格式应该正确,并且根据 Apple 的说法,符合 RFC2396 .

如果 URL 格式不正确,NSURL 将返回 nil。下一行将失败,因为您强制解包了 url 变量(感叹号 (!) 的用途)。如果您对设置为 nil 的变量执行强制展开,例如在 NSURLRequest 中,您的应用程序将在运行时崩溃并返回“在展开 Optional 值时意外发现 nil”

如果您想检查变量是否已正确初始化并且未设置为nil,您可以执行以下操作:

if let url = NSURL(string: "MY URL") {
var request = NSURLRequest(URL: url!)
var connection = NSURLConnection(request: request, delegate: self, startImmediately: true)
}
else {
println("url is set to nil)
}

要立即解决您的问题,请确保您的网址格式正确

关于swift - 快速发出 HTTP 请求和简单例份验证时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27555487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com