在 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")
}
}
}
您必须确保您的 first
、second
和 third
不包含任何空格 - 否则您将无法创建 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"
我正在尝试根据从 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")
}
}
}
您必须确保您的 first
、second
和 third
不包含任何空格 - 否则您将无法创建 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"