有没有办法在自己内部重用模型?

时间:2019-08-04 15:48:22

标签: swift

我有一个存储用户(UserModel)朋友列表的应用。如果朋友单击一个用户,则其类型是相同的类型(UserModel)。在Swift中,它不允许递归使用模型,这给了我这个错误:

“值类型'OwnerModel'不能具有递归包含它的存储属性”

import Foundation
struct OwnerModel: Codable {
    var ownerId: Int
    var ownerEmail: String
    var ownerUserName: String
    var ownerCommonName: String
    var ownerBirthDate: String
    var ownerCountry: String
    var ownerBdayReminderId: Int
    var ownerIsVerified: Bool
    var ownerIsOnline: Bool
    var ownerIsEventGreeted: Bool
    var ownerIsBirthdayGreeted: Bool
    var ownerAllowGreeting: Bool
    var ownerFriends: OwnerModel
}

有没有办法可以在ownerFriends下重用OwnerModel?

1 个答案:

答案 0 :(得分:1)

这不起作用,因为结构是值类型。因此,每个OwnerModel内部都必须具有OwnerModel,内部必须具有OwnerModel,内部必须具有OwnerModel。...这永远无法解决。既然已标记了此Codable,请尝试编写希望将其编码为的JSON。

也就是说,ownerFriends似乎是复数的,这表明[OwnerModel],这不是问题,因为您可以将它们设为零:

struct OwnerModel: Codable {
    ...
    var ownerFriends: [OwnerModel]
}

请再次记住,结构是值类型。因此,每个OwnerModel只是一个值。它不是对任何其他对象的引用。如果要引用其他所有者,则可能要存储ID而不是实际对象(或使用类来创建引用)。