当前位置: 首页 > 知识库问答 >
问题:

努力将Double转换为字符串,以便将其放入对象数组中的文本SWIFTUI(SWIFT)

漆雕奇逸
2023-03-14

我正在尝试将下面的double值从我的环境对象放入一个文本,供用户查看。他是代码的一小部分,我在这里得到了一个错误,它说String类型的值必须被打开:

struct myView:View{
    @EnvironmentObject var getFood:FoodAddModel

    var unwrappedFoods:[AddedFoods]{
        getFood.foods ?? []
    }
    
    var body: some View{
        NavigationView{
        List{
        ForEach(unwrappedFoods) {obj in
            let this: String? = String(obj.totalCals)
            Text(obj.name)
            Text(this)
                }
        }
    }
    }
}

完整的文件代码:

import Foundation


import SwiftUI

struct AddedFoods:Identifiable{
    var name: String = ""
    var totalCals: Double = 0
    var totalProtein: Double = 0
    var totalCarbs: Double = 0
    var totalFat: Double = 0
    var id = UUID().uuidString
   //Your other properties
}


class FoodAddModel: ObservableObject,Identifiable {
    
    @Published var foods : [AddedFoods]?
    
    var id = UUID().uuidString

    init() {
        dummyData()
    }
    
    func dummyData() {
        var obj:[AddedFoods] = []
        obj.append(AddedFoods(name: "Pasta", totalCals: 340, totalProtein: 20, totalCarbs: 45, totalFat: 15))
        obj.append(AddedFoods(name: "Chicken", totalCals: 560, totalProtein: 20, totalCarbs: 45, totalFat: 15))
        obj.append(AddedFoods(name: "Apple", totalCals: 54, totalProtein: 20, totalCarbs: 45, totalFat: 15))
        obj.append(AddedFoods(name: "Noodles", totalCals: 231, totalProtein: 20, totalCarbs: 45, totalFat: 15))
        foods = obj
    }
}

struct myView:View{
    @EnvironmentObject var getFood:FoodAddModel

    var unwrappedFoods:[AddedFoods]{
        getFood.foods ?? []
    }
    
    var body: some View{
        NavigationView{
        List{
        ForEach(unwrappedFoods) {obj in
            let this: String? = String(obj.totalCals)
            Text(obj.name)
            Text(this)
                }
        }
    }
    }
}

如有任何帮助,我们将不胜感激:)

共有1个答案

诸正谊
2023-03-14

您可以只使用字符串插值来显示text中的Double值。您可以在这里阅读更多关于字符串插值的内容,如果您需要特定的小数位数,也可以使用String(format:)来完成这一操作,您可以在这里阅读更多内容。

像这样的东西应该管用。

struct myView:View{
    @EnvironmentObject var getFood:FoodAddModel

    var unwrappedFoods:[AddedFoods]{
        getFood.foods ?? []
    }

    var body: some View{
        NavigationView{
            List{
                ForEach(unwrappedFoods) {obj in
                    Text(obj.name)
                    Text("\(obj.totalCals)")
                    // Or if you need a fixed number of decimal places
                    Text(String(format: "%.0f", obj.totalCals))
                    Text(String(format: "%.2f", obj.totalCals))
                }
            }
        }
    }
}

注意,按照惯例,结构应该以大写字母开头,因此您的结构myview应该真正命名为myview

 类似资料:
  • 我有一个pandas数据框架,其中混合了数据类型(DType),我希望将其转换为numpy结构化数组(或记录数组,在本例中基本相同)。对于纯数字数据帧,使用方法很容易做到这一点。我还需要将pandas列的数据类型转换为字符串而不是对象,以便使用numpy方法,该方法将数字和字符串输出到二进制文件,但不会输出对象。 简而言之,我需要将带有的panda列转换为字符串或unicode数据类型的numpy

  • 问题内容: 将带逗号的字符串数字(例如:835,111.2)转换为Double实例的最简单,正确的方法是什么。 谢谢。 问题答案: 看一看。例如: 根据您使用的数量类型,您可能想解析为一个。最简单的方法可能是: 或与一起使用:

  • 问题内容: 我不确定是我还是什么,但是将双精度转换为字符串时遇到问题。 这是我的代码: 我是在做错事还是在这里错过了一步。 尝试将其转换时出现错误。 我正在尝试在onTouchListener中执行此操作。病态发布更多代码,基本上是当用户触摸编辑文本框时,我希望信息计算填充编辑文本框。 问题答案: 这会将double转换为String

  • 如何将Java中的字符串(如12.34)转换为双精度?

  • 问题内容: 我想转换这个字符串 到2个JSON对象的数组。我该怎么办? 最好 问题答案: 使用jQuery: 是您的JSON对象。

  • 我在neo4j关系的属性中存储了一个double(-0.1643)作为字符串(“-0.1643”)。 显然,我可以将数据存储为数值。但是在cypher中可以将字符串转换为double吗?类似于: