相关疑难解决方法(0)

SwiftUI可选TextField

SwiftUI文本字段可以与可选绑定一起使用吗?当前此代码:

struct SOTestView : View {
    @State var test: String? = "Test"

    var body: some View {
        TextField($test)
    }
}
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

无法将类型'Binding <String?>'的值转换为预期的参数类型'Binding <String>'

有没有办法解决?在数据模型中使用Optionals是一种非常常见的模式-实际上,这是Core Data中的默认设置,因此SwiftUI不支持它们似乎很奇怪

swiftui

11
推荐指数
4
解决办法
1036
查看次数

如何在不中断删除的情况下在 SwiftUI 中实现文本字段列表

当我

  1. 在 XCode 中创建主从应用程序
  2. 使用核心数据
  3. 一个新字段添加到事件模型(说titleString
  4. MasterView实现更改为此
struct MasterView: View {
    @FetchRequest(
        sortDescriptors: [NSSortDescriptor(keyPath: \Event.timestamp, ascending: true)], 
        animation: .default)
    var events: FetchedResults<Event>

    @Environment(\.managedObjectContext)
    var viewContext

    var body: some View {
        List {
            ForEach(events, id: \.self) { event in
                NavigationLink(
                    destination: DetailView(event: event)
                ) {
                    TextField("Title", text: Binding(ObservedObject<Event>(wrappedValue: event).projectedValue.title)!)
                }
            }.onDelete { indices in
                self.events.delete(at: indices, from: self.viewContext)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

,即,使用与对象属性的适当绑定换出Textfor TextField,只要我不尝试从列表中删除,XCode 就会愉快地编译并且应用程序以预期的行为运行。titleevent

当我尝试删除 an 时Event,它会因此堆栈跟踪而崩溃 …

swiftui swiftui-list

9
推荐指数
1
解决办法
1677
查看次数

我应该如何绑定到 SwiftUI 视图中的核心数据实体字符串属性?

这是我的 SwiftUI 视图:

struct EditEntity: View {
    @State var entity: Entity
    var body: some View {
        Form {
            TextField("Entity Name", text: $entity.name)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Entity是 Core Data 使用代码生成为我创建的对象。

以下是该实体在核心数据模型文件中的设置方式:

核心数据模型设置

我遇到的问题是,当 SwiftUI 想要一个对象时,它$entity.name是一个对象。所以我收到这个编译错误:Binding<String?>Binding<String>

Cannot convert value of type 'Binding<String?>' to expected argument type 'Binding<String>'

那么有人知道最佳实践是什么吗?我应该在视图类中为该属性创建一个单独的非可选变量吗?从我的屏幕截图中可以看出,我将属性设置为不可选,希望它是一个非可选字符串,但显然这不起作用。

我发现基本上这个问题在这里问。答案是创建一个扩展。当尝试将 SwiftUI 与 Core Data 一起使用来完成如此基本的事情时,这真的是需要做的吗?

core-data swift swiftui

6
推荐指数
1
解决办法
1520
查看次数

标签 统计

swiftui ×3

core-data ×1

swift ×1

swiftui-list ×1