我有一个存储用户(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?
答案 0 :(得分:1)
这不起作用,因为结构是值类型。因此,每个OwnerModel内部都必须具有OwnerModel,内部必须具有OwnerModel,内部必须具有OwnerModel。...这永远无法解决。既然已标记了此Codable,请尝试编写希望将其编码为的JSON。
也就是说,ownerFriends
似乎是复数的,这表明[OwnerModel]
,这不是问题,因为您可以将它们设为零:
struct OwnerModel: Codable {
...
var ownerFriends: [OwnerModel]
}
请再次记住,结构是值类型。因此,每个OwnerModel只是一个值。它不是对任何其他对象的引用。如果要引用其他所有者,则可能要存储ID而不是实际对象(或使用类来创建引用)。