我实现了以下代码,在这里我可以传递资源的名称,它应该给我URL.我正在使用Xcode 14 Beta 3.

 static let baseUrl = "localhost:8080"
 static func resource(for resourceName: String) -> URL? {
            
            var components = URLComponents()
            components.scheme = "http"
            components.percentEncodedHost = baseUrl
            components.path = "/\(resourceName)"
            return components.url
            
        }

我正在传递一个资源名称作为"我的宠物",它应该返回http://localhost:8080/my-pets,但它一直返回http://my-pets.我不确定我在哪里犯了错误.

推荐答案

您正在传递"localhost:8080"作为主机名.这是不对的.主机名为"localhost".8080在port区.

您可能希望改用这种方法:

let baseURL = URLComponents(string: "http://localhost:8080")!

func resource(for resourceName: String) -> URL? {
    var components = baseURL
    components.path = "/\(resourceName)"
    return components.url
}

如果问题真的这么简单,你也可以这样做:

let baseURL = URL(string: "http://localhost:8080")!

func resource(for resourceName: String) -> URL? {
    baseURL.appending(path: resourceName)
}

Swift相关问答推荐

为表单部分赋予背景 colored颜色 /渐变

Swift UI在视图中排序不同的 struct

为SwiftUI文本视图提供固定宽度,并仅在文本换行时使文本视图底部增大

SwiftUI同心圆,通过逐渐出现来显示进度

仅当单击UIButton时才调用计时器函数

UIImage和UIimage.pngData返回两个不同的图像

macOS SwiftUI: 如何触发删除一个项目?

在这个使用 URLSession 的简单 case 中是否创建了一个强引用循环?

PassthroughSubject 的 AsyncPublisher 值属性未生成所有值

RxSwift 提高性能

如何在 SwiftUI 中将图像传递到 2 个视图

数组使用偏移量对自身执行 XOR

Swift Components.Url 返回错误的 URL

`IndexSet` 永远不会是空的?

用于 Swift 编码的 iOS 应用程序的 Ffmpeg

使 struct 可散列?

如何在 Swift 中将 NSURL 转换为字符串

使用 Swift 以编程方式自定义 UITableViewCell

在 Swift 中子类化 NSObject - 初始化器的最佳实践

转换为 swift 3 后,视图控制器中出现奇怪的通用函数