我有一个非常大的 Json 文件要(几 MB)解析,但没有合适的文档。生活艰难。就我可以识别文件中的对象而言,这很容易。但是有些东西我不明白,简单的 Codable 协议失败了。在数组中,layers我可以找到三个 Layer 对象,每个对象都有属性elements。在elements我可以找到不止一个elementData在第一层有"ImageID":32dd...和component,在第二层"name":...和第三层有和"contours": [...]。可能会有更多的可能性。我的每一次尝试都以错误结束。
对不起,这段代码会很长,但我不想剪掉重要的部分:
"layers":[
{
"name":"img",
"elements":[
{
"elementData":{
"imageId":"32dd800000002"
},
"transform":{
"xScale":100,
"yScale":100
},
"active":true
},
{
"component":{
"glyphName":"e",
"layerName":"img"
}
},
{
"elementData":{
"composite":{
"builder":{
"builderGroup":{
}
}
}
},
"transform":{
"xOffset":120
},
"nonSpacing":true
}
],
"color":"maroon",
"active":true
},
{
"name":"Black",
"elements":[
{
"component":{
"glyphName":"e",
"layerName":"Black"
}
},
{
"elementData":{
"name":"caron",
"contours":[
{
"nodes":[
"80 …Run Code Online (Sandbox Code Playgroud) 我正在尝试了解 UndoManager 的工作原理。我制作了一个小应用程序来撤消/重做某些操作。我有几个问题,我在文档中找不到答案:
我知道 UndoManager 可以通过以下方式在 View 中访问
@Environment(\.undoManager) var undoManager
杰出的。但在这种情况下,它仅在视图中可用,如果我想在结构中更深的地方使用它,我必须通过模型将其传递给对象...是否有一种方法可以在其他对象中访问相同的 UndoManager ?模型、数据...我可以更方便,特别是如果有很多撤消分组。如果我在文档(或其他地方)中创建 UndoManager,则主菜单“编辑”->“撤消”、“重做”将看不到它
在GitHub 上的应用程序存储库中,我实现了撤消/重做。对我来说(哈哈)它看起来不错,甚至可以工作,但不适用于第一次行动。第一个操作撤消会导致Thread 1: signal SIGABRT错误。经过三个操作后,我可以撤消最后两个操作……砰。有问题
import Foundation
import SwiftUI
struct CustomView: View {
@ObservedObject var model: PointsViewModel
@Environment(\.undoManager) var undoManager
@GestureState var isDragging: Bool = false
@State var dragOffsetDelta = CGPoint.zero
var formatter: NumberFormatter {
let formatter = NumberFormatter()
formatter.allowsFloats = true
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 5
return formatter
}
var body: some View {
HStack {
VStack(alignment: .leading, …Run Code Online (Sandbox Code Playgroud)