Ios Swift-通过多个类连接有内容的数据
我正在尝试从我的Ios Swift-通过多个类连接有内容的数据,ios,swift,contentful,Ios,Swift,Contentful,我正在尝试从我的Swift应用程序中的Contentful获取数据,但一直无法获取字典 更新:类型为链接&链接类型为条目。所以我需要解码一个条目的链接 因此,在项目A的内容数据中,我有: "itemB": { "sys": { "type": "Link", "linkType": "Entry", "id": "id_is_here" } }, 但是
Swift
应用程序中的Contentful
获取数据,但一直无法获取字典
更新:类型为链接&链接类型为条目。所以我需要解码一个条目的链接
因此,在项目A的内容数据中,我有:
"itemB": {
"sys": {
"type": "Link",
"linkType": "Entry",
"id": "id_is_here"
}
},
但是在我的代码中,我的itemB
是nil
以下是我尝试过的:
// Item A
class ItemA: EntryDecodable, FieldKeysQueryable {
static let contentTypeId: String = "ItemA"
// FlatResource Memberes.
let id: String
var updatedAt: Date?
var createdAt: Date?
var localeCode: String?
var itemB: ItemB?
public required init(from decoder: Decoder) throws {
let sys = try decoder.sys()
id = sys.id
localeCode = sys.locale
updatedAt = sys.updatedAt
createdAt = sys.createdAt
let fields = try decoder.contentfulFieldsContainer(keyedBy: FieldKeys.self)
try fields.resolveLink(forKey: .itemB, decoder: decoder) { [weak self] item in
self?.itemB = item as? ItemB
}
}
enum FieldKeys: String, CodingKey {
case itemB
}
public init(sys: Sys, itemB: ItemB?) {
id = sys.id
localeCode = sys.locale
updatedAt = sys.updatedAt
createdAt = sys.createdAt
self.itemB = itemB
}
}
// Item B
class ItemB: EntryDecodable, FieldKeysQueryable {
static let contentTypeId: String = "ItemB"
// FlatResource Memberes.
let id: String
var updatedAt: Date?
var createdAt: Date?
var localeCode: String?
let name: String?
public required init(from decoder: Decoder) throws {
let sys = try decoder.sys()
id = sys.id
localeCode = sys.locale
updatedAt = sys.updatedAt
createdAt = sys.createdAt
let fields = try decoder.contentfulFieldsContainer(keyedBy: FieldKeys.self)
self.name = try fields.decode(String.self, forKey: .name)
}
enum FieldKeys: String, CodingKey {
case name
}
public init(sys: Sys, name: String) {
id = sys.id
localeCode = sys.locale
updatedAt = sys.updatedAt
createdAt = sys.createdAt
self.name = name
}
}
您的json itemB没有name或createdAt,为什么需要它们,而放弃type、linkType。。?我只是想看看你是否遗漏了什么,或者这是你出于某种原因的意图。我可能没有使用正确的术语,但我想我只是想从ItemA映射到ItemB。所以基本上,A项可能包含也可能不包含B项中的一个或多个。B项中有更多的数据。@matt我正在使用Postman,可以吐出我的JSON,因此我可以准确地看到我需要的内容。我只是不知道正确的编码方法。我只需要能够得到我的itemB(如上所列),这样我就可以得到那个ID,然后再进行另一个匹配。但现在Xcode只是说它是零。