我有个问题.我有一个从类a传递到类B的数据模型.我希望类B从类a检索更改的值.它们都可以编辑和共享相同的数据.然而,现在B类无法从A类中获得任何价值.我如何才能做到这一点

struct DataModel {
  var firstName: String = ""
  var lastName: String = ""
}
class ClassA {

 var dataModel: DataModel

  
  ClassB(dataModel: dataModel)
  dataModel.firstName = "ABC"
}
class ClassB {
   var dataModel: DataModel

   init(dataModel: dataModel) {
     self.dataModel = dataModel

     dataModel.firstName <--- Print Null
  }
}

推荐答案

当您将a.dataModel传递给B时,struct是一种值类型,因此会将dataModel的副本传递给B,而不是原始实例.

所以,如果您想修改A和B中的A.dataModel,只需对数据模型使用class,而不是struct

换句话说,您需要将A.dataModel的引用传递给B

class DataModel {
    var firstName: String = ""
    var lastName: String = ""
}

Ios相关问答推荐

PieChartView未以编程方式显示在屏幕上

Nomb iOS 17.4.0中崩溃

为什么Reaction-Native-Vision-Camera不能与闪光灯一起使用?

验证开发人员应用程序证书是否已在您的设备上验证

AVFoundation Camera推出变焦SWIFT

在 Swift 项目中使用情节提要加载 obj-c 文件

SwiftUI HStack 文本字段对齐

SKScene 的更新功能似乎不起作用

如何根据条件快速将返回类型设为 LinearGradient 或 AngularGradient?

包装在 AnyView 中时 UIViewControllerRepresentable 无法正常工作

DateFormatter 使用 TimeZone 和 Locale 的特定组合返回 nil

通过 tuist/XcodeProj 以编程方式将文件添加到本机目标

在向我的 struct 添加属性后获取线程 10:EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

检测 iPhone/iPad/iPod touch 的 colored颜色 ?

如何在 SwiftUI 中检测 TextField 的实时变化?

如何使用 Swift 从assets资源 中加载特定图像

用 PC 调试 ipad safari

如何隐藏uitabbar控制器

Xcode 4 + iOS 4.3:存档类型不存在打包程序

Storyboard Segue 从视图控制器到自身