在 Swift xCode 中以编程方式编辑 URL

Editing a URL programatically in Swift xCode

我正在尝试根据从 Parse.com 数据库中获取的变量更改我的 UIWebView Url。

首先,我将三字字符串分成三部分,然后将这些部分放入 url。 但是,我收到一个错误!这很奇怪:

以下是代码,以防您看不到它:

import UIKit
import Parse
import ParseUI

class myBookingsItemTableViewController: UITableViewController {

    var object: PFObject!

    @IBOutlet weak var typeOfBookingLabel: UILabel!
    @IBOutlet weak var typeOfBookingQRCode: UIWebView!

    var ticketId = String()

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)

        if (self.object != nil) {        
            self.typeOfBookingLabel?.text = self.object["booking"] as? String

            var ticketID = self.object["ticketId"] as? String
            self.ticketId = ticketID!

            var ticketIdArr = split(ticketId) {[=13=] == " "}
            var first: String = ticketIdArr[0]
            var second: String? = ticketIdArr.count > 1 ? ticketIdArr[1] : nil
            var third: String? = ticketIdArr.count > 2 ? ticketIdArr[2] : nil

            let url = NSURL (string: "http://chart.apis.google.com/chart?chl=\(first)+\(second)+\(third)&chs=200x200&cht=qr&chld=H%7C0")
            let requestObj = NSURLRequest(URL: url!)
        typeOfBookingQRCode.loadRequest(requestObj)
        } else {
            self.object = PFObject(className: "Bookings")        
        }
    }
}

您必须确保您的 firstsecondthird 不包含任何空格 - 否则您将无法创建 URL它 - 它将 return nil 并且你的解包失败。

您可以使用

first = first.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())!

此外,我建议不要在您的情况下使用 nil,而是排除第二个和第三个参数(如果它们为 nil)或将 nil 替换为实际值 - 这样您就可以将它们的类型更改为String 再也不用担心选项了。

以下代码片段对所有三个值进行转义并始终生成 URL:

func urlEncode(par:String!) -> String! {
    return par.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())!
}

var first: String = urlEncode(ticketIdArr[0])
var second: String = ticketIdArr.count > 1 ? urlEncode(ticketIdArr[1]) : "nil"
var third: String = ticketIdArr.count > 2 ? urlEncode(ticketIdArr[2]) : "nil"