Core Data 计算属性总是返回 0

Posted

技术标签:

【中文标题】Core Data 计算属性总是返回 0【英文标题】:Core Data computed property always returns 0 【发布时间】:2021-07-06 21:42:04 【问题描述】:

我正在学习 SwiftUI 并创建一个非常简单的应用程序,其中一些 Ints 在一个屏幕上输入 (Itemsheet),计算在 app.xcdatamodel 中运行,它们在 ContentView 上输出。

但是,计算出来的值让我抓狂。它似乎总是显示为 0。我很想知道是否有人知道为什么?

这是我的代码:

ItemSheet.swift

@Environment(\.managedObjectContext) private var viewContext

Stepper("\(days) days", value: $days)
Stepper("\(cost)€", value: $cost)

app.xcdatamodel

extension Pricing 

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Pricing> 
        return NSFetchRequest<Pricing>(entityName: "Pricing")
    

@NSManaged public var days: Int16
@NSManaged public var cost: Int16
public var costPerDay: String 
        get 
            if (self.cost > 0) 
                let newValue = String(format: "%.0f", "Cost per day: \(cost) / \(days)")
                return newValue
            
            else 
                return "add cost"
            
        
        set 
            self.costPerDay = newValue
        
    

ContentView.swift

struct ContentView: View 
    @Environment(\.managedObjectContext) private var viewContext

    @FetchRequest(entity: Clothing.entity(), sortDescriptors: [])
    var clothing: FetchedResults<Clothing>

var body: some View 
ForEach(clothing)  item in
Text("Days: \(item.days)")
Text("Cost: \(item.cost)")
Text("Cost per Days: \(item.costPerDay)")




其他两个文本视图(Text("Days: \(item.days)")Text("Cost: \(item.cost)"))工作正常,所以我猜我在某处的核心数据模型中犯了一个新手错误?

谢谢!

【问题讨论】:

【参考方案1】:

把你的字符串改成

String(format: "Cost per day: %.0f",  Double(cost / days))

"%.0f" 用于FloatDouble 你正在处理Int16

【讨论】:

嘿嘿...在所有愚蠢和基本的错误中,这必须赢得当天的奖项!谢谢!

以上是关于Core Data 计算属性总是返回 0的主要内容,如果未能解决你的问题,请参考以下文章

如何根据来自多个 Core Data 属性的计算值进行排序

Core Data 中父实体的计算属性

Core Data 和 Swift 中的计算属性与持久存储

Core Data 实体在方法中返回后缺少其属性

Authorize Policy 属性总是返回 403 禁止使用 .net core Identity 和 JwtBearerAuthentication

从 Core-Data 请求不同的 NSManagedObject 属性实例时返回啥类?