SwiftUI渲染Text时输出CoreData的description问题
SwiftUI渲染Text时输出CoreData的description问题

SwiftUI渲染Text时输出CoreData的description问题

问题描述

在SwiftUI中,发现视图输出以下内容:

<ERdepot.UserForeignCurrency:0×600002127750>(entity:UserForeignCurrency;id:0×be25842fe305c8b2<x-coredata://DEF8BFE-D397-49F1-9233-3DAF4019975E/UserForeignCurrency/p4>;data:{amount = 5000;purchaseAmunt = 0;purchaseDate = nil; remark = nil;symbol = USD; })

刚开始以为是视图乱码。

后来排查了解到,是因为Text导致的这一问题。

Text(verbatim:"\(currency)")

在列表中,我输出的currency实际上是CoreData对象:

@FetchRequest(
   fetchRequest: {
       let request = NSFetchRequest<UserForeignCurrency>(entityName: "UserForeignCurrency")
       request.sortDescriptors = [NSSortDescriptor(keyPath: \UserForeignCurrency.symbol, ascending: true)]
       return request
   }()
 var userForeignCurrencies: FetchedResults<UserForeignCurrency>


ForEach(userForeignCurrencies,id:\.self) { currency in
    Text(verbatim: "\(currency)")   // 出现问题的Text代码
        .foregroundColor(.gray)
}

因为使用了Text(verbatim:””)输出的是Core Data实体,而不是Core Data字段,SwiftUI在渲染Text(verbatim:”\(currency)”)时,不知道如何显示Core Data实体,于是默认调用了它的 description 或 debugDescription。

解决方案

使用Text(可选 ?? ””)的形式,输出对应的Core Data实体字段:

Text("\(currency.symbol ?? "")")
    .foregroundColor(.gray)

问题得到解决。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注