Swiftui 读取和格式化日期时出现问题
我试图将CoreData中的一些数据读取到标准列表中,但读取和格式化日期时遇到问题。我似乎离杂草很远!我在试图显示日期的位置出现错误“类型为'Date'的值没有成员'getFormattedDate',并且在getFormattedDate函数的最后一行出现错误“无法将类型为'listView'的值转换为预期的参数类型'Date'Swiftui 读取和格式化日期时出现问题,swiftui,ios14,xcode12,Swiftui,Ios14,Xcode12,我试图将CoreData中的一些数据读取到标准列表中,但读取和格式化日期时遇到问题。我似乎离杂草很远!我在试图显示日期的位置出现错误“类型为'Date'的值没有成员'getFormattedDate',并且在getFormattedDate函数的最后一行出现错误“无法将类型为'listView'的值转换为预期的参数类型'Date' struct listView: View { @Environment(\.managedObjectContext) private var v
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)
}
}
}
结构列表视图:视图{
@环境(\.managedObjectContext)私有变量viewContext
let categories=[“AAA”、“BBB”、“CCC”、“DDD”]
@获取请求(
实体:CurrTrans.entity(),
sortDescriptors:[]
)var currTrans:FetchedResults
var body:一些观点{
名单{
ForEach(currTrans,id:\.self){item in
VStack{
let date=item.entryDT
文本(date.getFormattedDate())
//显示类别
如果item.entryCat!=nil{
文本(“类别:\(类别[Int(item.entryCat)]))
}否则{
正文(“”)
//显示说明
如果item.entryDsc!=nil{
文本(\(item.entryDsc!))
}否则{
正文(“”)
}
}
}
}
func getFormattedDate()->字符串{
让dateformat=DateFormatter()
dateformat.dateformat=“d MMM HH:mm”
return dateformat.string(from:self)
}
}
}
@objc(事务)
公共类事务:NSManagedObject{
静态let categoryStringsByCategoryID=[“AAA”、“BBB”、“CCC”、“DDD”]
func categoryString()->字符串{
return Transaction.categoryStringsByCategoryID[self.categoryID]
}
}
结构列表视图:视图{
@环境(\.managedObjectContext)私有变量viewContext
@FetchRequest(sortDescriptors:[])var事务:FetchedResults
var body:一些观点{
名单{
ForEach(事务){事务中的事务
VStack{
文本(\(transaction.timestamp!,格式化程序:transactionFormatter))
//显示类别
文本(“类别:\(transaction.categoryString)”)
//显示说明
文本(\(transaction.entryDescription??))
}
}
}
}
}
私有let transactionFormatter:DateFormatter={
let formatter=DateFormatter()
formatter.dateStyle=.short
formatter.timeStyle=.medium
返回格式化程序
}()
@objc(事务)
公共类事务:NSManagedObject{
静态let categoryStringsByCategoryID=[“AAA”、“BBB”、“CCC”、“DDD”]
func categoryString()->字符串{
return Transaction.categoryStringsByCategoryID[self.categoryID]
}
}
结构列表视图:视图{
@环境(\.managedObjectContext)私有变量viewContext
@FetchRequest(sortDescriptors:[])var事务:FetchedResults
var body:一些观点{
名单{
ForEach(事务){事务中的事务
VStack{
文本(\(transaction.timestamp!,格式化程序:transactionFormatter))
//显示类别
文本(“类别:\(transaction.categoryString)”)
//显示说明
文本(\(transaction.entryDescription??))
}
}
}
}
}
私有let transactionFormatter:DateFormatter={
let formatter=DateFormatter()
formatter.dateStyle=.short
formatter.timeStyle=.medium
返回格式化程序
}()
@objc(事务)
公共类事务:NSManagedObject{
静态let categoryStringsByCategoryID=[“AAA”、“BBB”、“CCC”、“DDD”]
func categoryString()->字符串{
return Transaction.categoryStringsByCategoryID[self.categoryID]
}
}
结构列表视图:视图{
@环境(\.managedObjectContext)私有变量viewContext
@FetchRequest(sortDescriptors:[])var事务:FetchedResults
var body:一些观点{
名单{
ForEach(事务){事务中的事务
VStack{
文本(\(transaction.timestamp!,格式化程序:transactionFormatter))
//显示类别
文本(“类别:\(transaction.categoryString)”)
//显示说明
文本(\(transaction.entryDescription??))
}
}
}
}
}
私有let transactionFormatter:DateFormatter={
let formatter=DateFormatter()
formatter.dateStyle=.short
formatter.timeStyle=.medium
返回格式化程序
}()
@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
}()