无法弄清楚这个 Obj-C 到 Swift 的转换
Can't figure out this Obj-C to Swift conversion
我正在学习如何实施 instagram API 的教程,但我卡在了几个部分。边走边将 Obj-C 转换为 Swift,以为我明白我在做什么,但显然不是。
这部分目前给我一个问题,我不能把这些常量放在一起 NSString(format: .. , args: ...)
NSString *fullURL = [NSString stringWithFormat:@"%@%@&redirect_uri= %@&response_type=token",KAUTHURL,KCLIENTID,kREDIRECTURI];
而且我无法让 UIWebView.loadRequest 加载完整的 URL 变量
如有任何帮助,我们将不胜感激!
答案:
import UIKit
class OAuthViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var myWebView: UIWebView?
var savedToken = ""
var userDefaults = NSUserDefaults.standardUserDefaults()
var KAUTHURL: String = "https://api.instagram.com/oauth/authorize/"
var kAPIURl: String = "https://api.instagram.com/v1/users/"
var KCLIENTID: String = "02627256292c4083a42e55db3ef21a82"
var KCLIENTSERCRET: String = "15d0c073b82545d7b000fdf8440bf0c6"
var KREDIRECTURI: String = "https://www.chahooo.tumblr.com"
var KSCOPEADD: String = "&scope=relationships+comments"
override func viewDidLoad() {
super.viewDidLoad()
// Loading the Instagram login page for user's to log in
var fullURL = "\(KAUTHURL)?client_id=\(KCLIENTID)&redirect_uri=\(KREDIRECTURI)&response_type=token"
var url = NSURL(string: fullURL)
var request: NSURLRequest = NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 40)
myWebView!.loadRequest(request)
}
var KAUTHURL = "blah blah blah"
var KCLIENTID = "blah blah blah"
var kREDIRECTURI = "Blah blah blah"
var fullURL = String(format:"%s%s&redirect_uri= %s&response_type=token", KAUTHURL, KCLIENTID, kREDIRECTURI)
试试这个:
let fullURL = NSString(format: "%@%@&redirect_uri= %@&response_type=token", KAUTHURL,KCLIENTID,kREDIRECTURI)
最好的方法是使用 swift 字符串:
var fullURL = "\(KAUTHURL)\(KCLIENTID)&redirect_uri=\(kREDIRECTURI)&response_type=token"
然后你可以从这个字符串中获取一个 NSURL 对象:
var url = NSURL(string: fullURL)
要加载 webView 创建一个 NSURLRequest:
var request: NSURLRequest = NSURLRequest(URL: url, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 40)
yourWebView.loadRequest(request)
我正在学习如何实施 instagram API 的教程,但我卡在了几个部分。边走边将 Obj-C 转换为 Swift,以为我明白我在做什么,但显然不是。
这部分目前给我一个问题,我不能把这些常量放在一起 NSString(format: .. , args: ...)
NSString *fullURL = [NSString stringWithFormat:@"%@%@&redirect_uri= %@&response_type=token",KAUTHURL,KCLIENTID,kREDIRECTURI];
而且我无法让 UIWebView.loadRequest 加载完整的 URL 变量
如有任何帮助,我们将不胜感激!
答案:
import UIKit
class OAuthViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var myWebView: UIWebView?
var savedToken = ""
var userDefaults = NSUserDefaults.standardUserDefaults()
var KAUTHURL: String = "https://api.instagram.com/oauth/authorize/"
var kAPIURl: String = "https://api.instagram.com/v1/users/"
var KCLIENTID: String = "02627256292c4083a42e55db3ef21a82"
var KCLIENTSERCRET: String = "15d0c073b82545d7b000fdf8440bf0c6"
var KREDIRECTURI: String = "https://www.chahooo.tumblr.com"
var KSCOPEADD: String = "&scope=relationships+comments"
override func viewDidLoad() {
super.viewDidLoad()
// Loading the Instagram login page for user's to log in
var fullURL = "\(KAUTHURL)?client_id=\(KCLIENTID)&redirect_uri=\(KREDIRECTURI)&response_type=token"
var url = NSURL(string: fullURL)
var request: NSURLRequest = NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 40)
myWebView!.loadRequest(request)
}
var KAUTHURL = "blah blah blah"
var KCLIENTID = "blah blah blah"
var kREDIRECTURI = "Blah blah blah"
var fullURL = String(format:"%s%s&redirect_uri= %s&response_type=token", KAUTHURL, KCLIENTID, kREDIRECTURI)
试试这个:
let fullURL = NSString(format: "%@%@&redirect_uri= %@&response_type=token", KAUTHURL,KCLIENTID,kREDIRECTURI)
最好的方法是使用 swift 字符串:
var fullURL = "\(KAUTHURL)\(KCLIENTID)&redirect_uri=\(kREDIRECTURI)&response_type=token"
然后你可以从这个字符串中获取一个 NSURL 对象:
var url = NSURL(string: fullURL)
要加载 webView 创建一个 NSURLRequest:
var request: NSURLRequest = NSURLRequest(URL: url, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 40)
yourWebView.loadRequest(request)