You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中Text组件超链接使用时Int参数被异常转换问题

解决SwiftUI Text组件中超链接Int参数被错误编码的问题

问题原因

你遇到的错误是因为在Text的链接字符串中直接插入Int类型值时,SwiftUI将其识别为NSString的格式化占位符(%lld),经过URL编码后变成%25lld,导致生成的URL无效,触发系统的参数错误提示。

解决方案

  1. 将Int转换为String后再插值:避免Int被当成格式化占位符处理
  2. 确保URL完整性:添加对应的scheme(如https://或关联域名专用的applinks:),让系统能正确识别链接类型

修改后的代码示例

import SwiftUI

struct CustomText: View {
    private let id: Int
    
    init(id: Int) {
        self.id = id
    }
    
    var body: some View {
        VStack {
            Text("Click this")
            + Text(" ")
            + Text("[link](https://arif-test.swiftuirnd.app/content/\(String(id)))")
        }
        .onOpenURL(perform: { url in
            print(url)
        })
    }
}

#Preview {
    CustomText(id: 123)
}

补充说明

如果使用应用关联域名的深链接,可替换为applinks: scheme,例如:

Text("[link](applinks:arif-test.swiftuirnd.app/content/\(String(id)))")

具体scheme需匹配你的应用关联域名配置。

内容的提问来源于stack exchange,提问作者SM Arif Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:35:05