SwiftUI TextField 日期绑定

SwiftUI TextField Date Binding

嗯。我对这些绑定做得不是很好。

struct RecordForm: View
{
    @State var record: Record
    var body: some View
    {
        TextField("date", text: Binding($record.recordDate!)))
    }
}

我想将此日期转换为字符串。在常规 Swift 中,我只会调用我的分机

record.recordDate.mmmyyy()

但我找不到正确的语法,甚至找不到进行转换的正确位置。

如果我尝试将代码放入正文或结构中,我只会得到一堆错误。

关于这个主题是否有易于阅读的文档?

文档很难找,Apple 的真的很烂。

尝试创建自定义绑定。

extension Date {
  func mmyyy() -> String { "blah" }
  static func yyymm(val: String) -> Date { Date() }
}

struct RecordForm: View {
  struct Record {
    var recordDate: Date
  }

  @State var record = Record(recordDate: Date())
  var body: some View {
    let bind = Binding(
      get: { self.record.recordDate.mmyyy() },
      set: { self.record.recordDate = Date.yyymm(val: [=10=])}
    )
    return VStack {
      TextField("date", text: bind)
    }
  }
}

九块石头的回答效果很好,尽管我不得不稍微调整代码以使其适用于 NSManagedObject:

struct RecordDate: View
{
    @State var record: Record //NSManagedObject
    var body: some View {
        let bind = Binding<String>(
            get: {self.$record.recordDate.wrappedValue!.dateString()},
            set: {self.$record.recordDate.wrappedValue = dateFromString([=10=])}
        )
        return HStack {
            Text("Date:")
            TextField("date", text: bind)
        }
    }
}

//dateString is a date extension that returns a date as a string
//dateFromString is a function that returns a string from a date