使用格式参数时,Swift 中的字符串初始值设定项问题
Posted
技术标签:
【中文标题】使用格式参数时,Swift 中的字符串初始值设定项问题【英文标题】:Issue with String initializer in Swift when using format parameter 【发布时间】:2021-09-14 19:00:01 【问题描述】:在我的 XCode 游乐场中,这行 Swift 代码出现错误:
print(String(format: "%.2f", 3.345))
错误读取
对初始化程序的调用没有完全匹配
我相信这意味着我没有使用正确的参数名称/顺序来调用初始化程序。但是,当在 ios 应用程序上运行这行代码时,甚至在在线 Swift 游乐场http://online.swiftplayground.run/ 中运行时,这行代码运行时没有任何问题。
但是,当在 XCode 游乐场或我的终端上通过 Swift REPL 运行它时,它会引发错误。
为什么会这样?
【问题讨论】:
你导入 Foundation 了吗? 啊,好吧,我只是认为这是一个不需要任何导入的内置函数。谢谢! 另外我猜你对 Xcode 环境还很陌生。如果您遇到类似的奇怪错误,您可以从搜索您正在使用的类型开始。不幸的是,文档也不总是直截了当,但它可能会提示您缺少什么。例如,String 的框架被列为“Swift 标准库”,但至少如果你滚动方式.. 向下你可以看到你在通话中是对的。你来自什么语言? 是的,我来自 Web 开发背景,我对 iOS 开发和 Swift 非常陌生。感谢您的建议! 从 Xcode beta 13 开始,你可以说例如3.345.formatted(.number.precision(.fractionLength(2)))
代替,但您仍然需要导入 Foundation。
【参考方案1】:
在使用 String 之前必须先导入 Foundation。 String 是 swift 中的 Foundation 类型。
我在下面的 cmets 中被 Matt 纠正了。 String 内置在 swift 中,而 String(format: 是基础。 我想这就是为什么文档没有这样显示的原因。 谢谢指正。
【讨论】:
这根本不是真的。 String 内置于 Swift 中。没有内置的是String(format:)
初始化器。
@matt 我很好奇 init 来自 Objective-c,我怎么能在文档中找到它?
它来自基金会。 :)以上是关于使用格式参数时,Swift 中的字符串初始值设定项问题的主要内容,如果未能解决你的问题,请参考以下文章