gpt4 book ai didi

ios - 将 rangeOfString 从 Objective-c 翻译成 Swift

转载 作者:行者123 更新时间:2023-11-29 01:54:41 25 4
gpt4 key购买 nike

我花了好几个小时来翻译这段简短的代码。 Objective-C :

NSString *urlStr = [request.URL absoluteString];
NSArray *urlParts = [urlStr componentsSeparatedByString:[NSString stringWithFormat:@"%@/", kREDIRECTURI]];

if (urlParts.count > 1)
{
urlStr = urlParts[1];
NSRange token = [urlStr rangeOfString:@"#access_token="];

if (token.location != NSNotFound)
{
vc.access_token = [urlStr substringFromIndex:NSMaxRange(token)];
}
}

我尝试过的:

swift :

var urlParts : NSArray = urlStr!.componentsSeparatedByString("\(kREDIRECTURI)")
if urlParts.count > 1
{
urlStr = urlParts[1] as? String
var token = urlStr!.rangeOfString("#access_token=", options: NSStringCompareOptions.allZeros) as NSRange!

if token != nil
{
var vc = ViewController()
urlStr!.substringFromIndex(NSMaxRange(token))!
}
}

有什么想法吗?

最佳答案

我将假设 access_token 查询参数在末尾,并且代码遵循这样的字符串 'http:\...#access_token=',url 以末尾的代码结束。这是一个简单的方法,可以从 url 中提取代码,

func getTokenFromUrl(url: String) -> String? {

let range1 = url.rangeOfString("#access_token")

guard let range = range1 else { return nil }

let startIndex = range.endIndex.successor()
let rangeOfToken = url.endIndex

let rangeOfString = startIndex ..< rangeOfToken

return url.substringWithRange(rangeOfString)
}

let url1 = "http://stackoverflow.com/questions/31010975/translate-rangeofstring-from-objective-c-to-swift?#access_token=873jasf82jmsa8sd"

let url2 = "http://stackoverflow.com/questions/31010975/translate-rangeofstring-from-objective-c-to-swift"

getTokenFromUrl(url1) // returns 873jasf82jmsa8sd
getTokenFromUrl(url2) // returns nil

对于早期版本的 Swift,你可以使用 if let patter 来解包可选的,

func getTokenFromUrl(url: String) -> String? {

let range1 = url.rangeOfString("#access_token")

if let range = range1 {

let startIndex = range.endIndex.successor()
let rangeOfToken = url.endIndex

let rangeOfString = startIndex ..< rangeOfToken

return url.substringWithRange(rangeOfString)
}
return nil
}

关于ios - 将 rangeOfString 从 Objective-c 翻译成 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31010975/

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