无法读取和格式化日期
Posted
技术标签:
【中文标题】无法读取和格式化日期【英文标题】:Trouble Reading and Formatting Date 【发布时间】:2020-10-08 23:37:52 【问题描述】:我正在尝试将 CoreData 中的一些数据读取到标准列表中,但在读取和格式化日期时遇到了问题。我似乎在杂草中遥遥无期!我有错误“'日期类型的值?'没有成员 'getFormattedDate'”,我试图在 getFormattedDate 函数的最后一行显示日期和错误“无法将 'listView' 类型的值转换为预期的参数类型 'Date'”。
struct listView: View
@Environment(\.managedObjectContext) private var viewContext
let categories = ["AAA", "BBB","CCC","DDD"]
@FetchRequest(
entity: CurrTrans.entity(),
sortDescriptors: []
) var currTrans: FetchedResults<CurrTrans>
var body: some View
List
ForEach(currTrans, id: \.self) item in
VStack
let date = item.entryDT
Text(date.getFormattedDate())
// display category
if item.entryCat != nil
Text("Category: \(categories[Int(item.entryCat)])")
else
Text("")
// display description
if item.entryDsc != nil
Text("\(item.entryDsc!)")
else
Text("")
func getFormattedDate() -> String
let dateformat = DateFormatter()
dateformat.dateFormat = "d MMM HH:mm"
return dateformat.string(from: self)
【问题讨论】:
【参考方案1】:@objc(Transaction)
public class Transaction: NSManagedObject
static let categoryStringsByCategoryID = ["AAA", "BBB","CCC","DDD"]
func categoryString() -> String
return Transaction.categoryStringsByCategoryID[self.categoryID]
struct ListView: View
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: []) var transactions: FetchedResults<Transaction>
var body: some View
List
ForEach(transactions) transaction in
VStack
Text("\(transaction.timestamp!, formatter: transactionFormatter)")
// display category
Text("Category: \(transaction.categoryString)")
// display description
Text("\(transaction.entryDescription ?? "")")
private let transactionFormatter: DateFormatter =
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .medium
return formatter
()
【讨论】:
以上是关于无法读取和格式化日期的主要内容,如果未能解决你的问题,请参考以下文章