在SwiftUI文本视图中插入CustomStringConvertible失败

elcex8rz  于 2023-03-22  发布在  Swift
关注(0)|答案(1)|浏览(102)

我大致有这样的东西,它的工作原理(见https://swiftfiddle.com/hu64oaef4fe23e3cqz6fkn44zq):

import Foundation
struct S : CustomStringConvertible {
  var description : String { "foo" }
}
print(S())  // prints foo
print("interpolated \(S())")

但是如果我尝试在Text视图的字符串中使用CustomStringConvertible的插值,比如

var s : S
...
Text("\(s)")

它无法编译,并且在调用示例方法“appendInterpolation”时没有完全匹配
值得注意的是,如果我使用Text("\(foo.description)"),它可以编译和工作。它也可以使用Int之类的东西:

let a = 5
...
Text("\(a)")

为什么我的CustomStringConvertible类型的直接插值不起作用?
编辑:文法

brqmpdu1

brqmpdu11#

Text.init you are using requires some StringProtocol.StringProtocolCustomStringConvertible派生而来,而不是相反。

Text(verbatim: "\(s)")

是一种选择。

相关问题