gpt4 book ai didi

ios - Xcode 和 SwiftUI - 如何重置 Canvas ?

转载 作者:行者123 更新时间:2023-12-05 02:43:24 33 4
gpt4 key购买 nike

问题:如何重置 Xcode 的预览 Canvas ?具体来说,如何清除在 Canvas 的实时预览中创建的 Canvas 中的所有核心数据?

示例代码:这是我用于 Canvas 预览的 SwiftUI 预览代码。

struct ItemView_Previews: PreviewProvider {
static var previews: some View {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
//Test data
let testItem = Item.init(context: context)
testItem.name = "Abc"
return ItemView(filter: false)
.environment(\.managedObjectContext, context)
}
}

通过这段代码,Canvas 向我展示了 testItem,以及在实时预览中创建的核心数据对象的 item.name。我想删除 Canvas 数据以便看不到以前创建的对象。

我尝试过的事情:Xcode - 产品 > 清理构建文件夹Xcode - 编辑器 > Canvas > 刷新 Canvas 模拟器 - 设备 > 删除所有内容和设置...

最后一个对于 Simulator 可以正常工作。我希望它也能删除 Canvas 数据,但事实并非如此。

--

完整的工作示例:

ContentView.swift

import SwiftUI
import CoreData

struct ContentView: View {

@Environment(\.managedObjectContext) var managedObjectContext
@State var paidFilter :Bool? = nil


var body: some View {

NavigationView {
List {

ItemView(filter: paidFilter)

}
.listStyle(PlainListStyle())
.navigationTitle(Text("Items"))
.navigationBarItems(
trailing:

Button(action: {
let item = Item(context: self.managedObjectContext)
item.name = "Test"

do {
try self.managedObjectContext.save()
}catch{
print(error)
}

}) {
Image(systemName: "plus.circle.fill")
.font(.title)
}
)
}
.navigationViewStyle(StackNavigationViewStyle())

}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
return ContentView()
.environment(\.managedObjectContext, context)
}
}

ItemView.swift

import SwiftUI

struct ItemView: View {
@Environment(\.managedObjectContext) var managedObjectContext
var fetchRequest: FetchRequest<Item>
var items: FetchedResults<Item> { fetchRequest.wrappedValue }

init(filter: Bool?) {
fetchRequest = FetchRequest<Item>(entity: Item.entity(), sortDescriptors: [])
}

var body: some View {
VStack {
ForEach(items, id: \.self) {item in
Text("\(item.name ?? "test123")")
}
}
}
}

struct ItemView_Previews: PreviewProvider {
static var previews: some View {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
//Test data
let testItem = Item.init(context: context)
testItem.name = "Abc"
return ItemView(filter: false)
.environment(\.managedObjectContext, context)
}
}

最佳答案

试试这个,

  • 打开终端
  • 转到您的项目目录
  • 运行此命令:xcrun simctl --set previews delete all

这将清除您的模拟器预览缓存数据。

关于ios - Xcode 和 SwiftUI - 如何重置 Canvas ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66913755/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com