SwiftUI中Text组件超链接使用时Int参数被异常转换问题
解决SwiftUI Text组件中超链接Int参数被错误编码的问题
问题原因
你遇到的错误是因为在Text的链接字符串中直接插入Int类型值时,SwiftUI将其识别为NSString的格式化占位符(%lld),经过URL编码后变成%25lld,导致生成的URL无效,触发系统的参数错误提示。
解决方案
- 将Int转换为String后再插值:避免Int被当成格式化占位符处理
- 确保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
相关产品推荐
相关产品推荐

