引用另一个结构的Swift结构

引用另一个结构的Swift结构,swift,class,struct,Swift,Class,Struct,我正在Xcode操场上测试以下代码 struct Coordinate: Codable { var latitude: Double var longitude: Double } struct Landmark: Codable { var name: String var foundingYear: Int var location: Coordinate } var MyCoordinate: Coordinate = Coordinate.in

我正在Xcode操场上测试以下代码

struct Coordinate: Codable {
    var latitude: Double
    var longitude: Double
}
struct Landmark: Codable {
    var name: String
    var foundingYear: Int
    var location: Coordinate
}

var MyCoordinate: Coordinate = Coordinate.init(latitude: 30.1, longitude: 10.2)
var LandmarkA: Landmark = Landmark.init(name: "My Landmark", foundingYear: 2017, location: MyCoordinate)
var LandmarkB: Landmark = Landmark.init(name: "My Landmark 2", foundingYear: 2016, location: MyCoordinate)


LandmarkA.location.latitude = 12.1

print (LandmarkA.location.latitude) // 12.1
print (LandmarkB.location.latitude) // 30.1
现在,如果我将此代码转换为类而不是结构

class Coordinate {
    var latitude: Double
    var longitude: Double

    init(latitude: Double, longitude: Double) {
        self.latitude = latitude
        self.longitude = longitude
    }
}
class Landmark {
    var name: String
    var foundingYear: Int
    var location: Coordinate

    init(name: String, foundingYear: Int, location: Coordinate) {
        self.name = name
        self.foundingYear = foundingYear
        self.location = location
    }
}

var MyCoordinate: Coordinate = Coordinate.init(latitude: 30.1, longitude: 10.2)
var LandmarkA: Landmark = Landmark.init(name: "My Landmark", foundingYear: 2017, location: MyCoordinate)
var LandmarkB: Landmark = Landmark.init(name: "My Landmark 2", foundingYear: 2016, location: MyCoordinate)


LandmarkA.location.latitude = 12.1

print (LandmarkA.location.latitude) // 12.1
print (LandmarkB.location.latitude) // 12.1
是否有可能让结构以与类相同的方式在什么位置上工作?如果我通过
LandmarkA.location.latitude
mycoordination.latitude
更改坐标,则应同时设置
LandmarkA
LandmarkB
。这种行为适用于类,但我不能在类中使用
Codable
,而且设置结构所需的代码更少

第一个示例中的最后两个print语句我希望都是
12.1
,并且都是相同的,因为它都引用了相同的对象

这是我唯一无法用structs解决的问题。结构还有我需要的一切,可编码的,结构中的函数,最小的设置代码,等等

我真的更喜欢使用结构,但如果这不可能,我可能会满足于使用类


关于如何实现这一点,你有什么想法吗?

你可以通过阅读来完全理解两者之间的区别。你也可以将Codable与class一起使用。@mohammaddadadiq我看到了这个链接,但没有完全理解它。这是否意味着无法对结构执行我想要的操作?我还没有看到任何使用Codable和class的例子或任何东西。有什么链接吗?苹果更喜欢你使用
struct
,但最终,决定权在于开发者根据自己的需要选择最佳的方法。您可以对类使用
Codable
,但从Xcode 9 Beta 3开始,类的代码合成器就有缺陷。最后我检查一下,它不能正确处理继承