Swift URL 有 3 个语法问题

Swift 3 syntax issues with URL

我正在尝试将 C# 示例转换为 Xcode 8 中的 swift,但我一直遇到语法问题。请参阅代码的小示例:

public class ToonAPIClient {
    private var APIManagerBaseAddress: URL!
    private var APIBaseAddress: URL!

    public init() {
        APIManagerBaseAddress = URL(String: "https://path.to.baseurl/")
        APIBaseAddress = URL(String: APIManagerBaseAddress + "append/path/data/")
    }
}

APIManagerBaseAddress 我收到错误

Argument labels '(String:)' do not match any available overloads

以及 APIManagerBaseAddress

Binary operator '+' cannot be applied to operands of type 'URL!' and 'String'

感谢任何帮助,因为我尝试了一大堆语法可能性:)

-edit- 感谢大家的帮助和建议!

使用string代替String

public init() {
    APIManagerBaseAddress = URL(string: "https://path.to.baseurl/")
    APIBaseAddress = URL(string: APIManagerBaseAddress + "append/path/data/")
}

这就是您在 Swift

中编写代码的方式
public class ToonAPIClient {
    private var APIManagerBaseAddress: URL!
    private var APIBaseAddress: URL!
public init() {
    //It is string not String in here
    APIManagerBaseAddress = URL(string: "https://path.to.baseurl/")

    // you can add values like that in Swift
    APIBaseAddress = URL(string:  URL(string: "\(APIManagerBaseAddress)append/path/data/"))
    }
}

首先是init(string:) not init(String:) also use appendingPathComponentAPIManagerBaseAddress

APIManagerBaseAddress = URL(string: "https://path.to.baseurl/")!

// you can add values like that in Swift
APIBaseAddress = APIManagerBaseAddress.appendingPathComponent("append/path/data/")

给你。我将您的路径插入一个变量(如果您打算以编程方式更改路径,请将 let 更改为 var)并缩短了您的代码。

希望对您有所帮助。

public class ToonAPIClient {
    private var APIManagerBaseAddress: URL!
    private var APIBaseAddress: URL!

    let path = "append/path/data/"

    public init() {
        APIManagerBaseAddress = URL(string: "https://path.to.baseurl/\(path)")

    }
}