我正在使用 DatePicker 將所選日期存盤在格式字串中的 Core Data 中,因此我使用了一個回傳 String 的計算屬性,并使用了一個 DateFormatter,它接受要轉換為字串的型別日期。
我有另一個視圖,它從 CoreData 獲取字串型別的存盤日期。
因此,為了將該字串日期轉換為要在日期選擇器中獲取的 Date 型別,我創建了一個回傳型別 Date 的計算屬性,并使用 dateFormatter 將獲取的 String 型別的日期轉換為 Date 型別。
選擇器需要一個系結日期,我正在關注 MVVM,所以我有一個 ExistingDealDetailsViewModel,我從中訪問 dealClosingDate。
但是編譯器給了我錯誤:“無法分配給屬性:'selectedDealClosingDate'是一個只能獲取的屬性”。
要求/目標:我想檢索存盤的日期并將其顯示在 DatePicker 中作為所選日期。
感謝所有和任何形式的幫助,謝謝。
現有交易視圖:
VStack {
Text("Deal Closing Date")
.foregroundColor(.gray)
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
DatePicker("Select a date:", selection: $existingDealDetailsVM.selectedDealClosingDate, displayedComponents: [.date]) //Error is shown at this line
.padding()
.overlay(RoundedRectangle(cornerRadius: 0)
.stroke(lineWidth: 1)
.foregroundColor(.gray))
.datePickerStyle(.compact)
}
.padding()
現有的DealDetailsViewModel:
import SwiftUI
class ExistingDealDetailsViewModel: ObservableObject {
@Published var toggle: Bool = false
func update(){
CoreDataManager.shared.save()
}
var deal = Deal() // Deal is a CoreData Entity Class
var dateFormatter = DateFormatter()
var selectedDealClosingDate: Date {
var dealClosingDate = deal.dealClosingDate //dealClosingDate is of type String
dateFormatter.dateFormat = "dd/MM/YY"
return dateFormatter.date(from: dealClosingDate) ?? Date.now
}
}
uj5u.com熱心網友回復:
想想當用戶使用日期選擇器更改選擇時會發生什么 - 您希望selectedDealClosingDate設定為新選擇的值,不是嗎?但是看看你宣告的方式selectedDealClosingDate!您只定義了如何計算它的值,但沒有定義如何設定它的值。
var selectedDealClosingDate: Date {
var dealClosingDate = deal.dealClosingDate
dateFormatter.dateFormat = "dd/MM/YY"
return dateFormatter.date(from: dealClosingDate) ?? Date.now
}
您應該添加一個設定器:
var dateFormatter = {
let formatter = DateFormatter()
formatter = .dateFormat = "dd/MM/yy"
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}()
var selectedDealClosingDate: Date {
get {
var dealClosingDate = deal.dealClosingDate
return dateFormatter.date(from: dealClosingDate) ?? Date.now
}
set {
deal.dealClosingDate = dateFormatter.string(from: newValue)
}
}
此外,我發現您在 Core Data 中將交易結束日期存盤為字串有點奇怪。您可能需要重新考慮這一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/410768.html
標籤:
下一篇:Python-正確拆分字串
