首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NumberFormatter中使用SwiftUI?

如何在NumberFormatter中使用SwiftUI?
EN

Stack Overflow用户
提问于 2021-04-16 17:29:42
回答 1查看 1.8K关注 0票数 1

我试图使用下面的NumberFormatter,但不知道如何在Text视图中使用它?在线上的一切都与TextView有关。

代码语言:javascript
复制
 static let numberFormat: NumberFormatter =  {
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .none
        numberFormatter.positivePrefix = "+"
        numberFormatter.negativePrefix = "-"
        return numberFormatter
    }()

我的尝试用法:但是我得到了错误Instance method 'appendInterpolation(_:formatter:)' requires that 'Int' inherit from 'NSObject'

代码语言:javascript
复制
Text("\(450, formatter: Self.numberFormat)")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-16 17:41:04

以下是一个简单的方法:

通过这种方式,您将尽可能保持@State的干净。而且,与您的方式相比,formatterFunction(number: Int)现在是可重用的,可以从任何地方访问,这是不可重用或不可访问的。

代码语言:javascript
复制
extension Formatter {
    static let number: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.numberStyle = .none
        formatter.positivePrefix = "+"
        formatter.negativePrefix = "-"
        return formatter
    }()
}

代码语言:javascript
复制
func formatterFunction(number: Int) -> String {
    Formatter.number.string(for: number) ?? ""
}

代码语言:javascript
复制
struct ContentView: View {
    @State var number: Int = 450
    var body: some View { 
        Text(formatterFunction(number: number))
    }
}

如果您只想将+和-添加到文本中,那么只需使用以下函数:

代码语言:javascript
复制
func formatterFunction(number: Int) -> String {
    if number > 0 {
        return "+" + String(number)
    }
    else if number < 0 {
        return "-" + String(abs(number))
    }
    else {
        return String(number)
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67129726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档