从Contentful获取数据时切换contentTypeId

时间:2019-08-30 08:33:28

标签: ios xcode swift4 contentful contentful-api

我正在尝试使用内容丰富的方法在我的应用程序中显示一些FAQs内容,下面是我用来获取数据的UserFAQs.swift类,它可以正常工作。现在,我对添加来宾用户的常见问题有了新的要求。每个用户只有不同的数据,其他所有内容都是相同的。因此,我创建了一个名为 guestFAQs 的现有 userFAQs 的重复内容模型,并为其添加了内容。在我的下面的类中,它们都可以单独工作,例如:如果我在下面的类中设置contentTypeId =“ guestFAQs”或contentTypeId =“ userFAQs”,则效果很好。但是我需要根据用户类型进行提取,并且当我根据以下条件设置contentTypeId时,即使当userType为guest时,它始终会以“ userFAQs” 的形式给出结果。我在这里想念什么吗?任何帮助表示赞赏。 This是我正在使用的库。

import UIKit
import Contentful

final class UserFAQs: EntryDecodable, FieldKeysQueryable, Resource {

    static var contentTypeId = (Utilities.userType == .normalUser) ? "userFAQs" : "guestFAQs"

    let sys: Sys
    var sectionIndex: Int?
    var sectionName: String?
    var questionName: String?
    var answer: String?

    // MARK: Initialization
    public required init(from decoder: Decoder) throws {
        print("APIName = \(UserFAQs.contentTypeId)")
        sys         = try decoder.sys()
        let fields      = try decoder.contentfulFieldsContainer(keyedBy: UserFAQs.FieldKeys.self)

        sectionIndex       = try fields.decodeIfPresent(Int.self, forKey: .sectionIndex)
        sectionName      = try fields.decodeIfPresent(String.self, forKey: .sectionTitle)
        questionName       = try fields.decodeIfPresent(String.self, forKey: .questionName)
        answer    = try fields.decodeIfPresent(String.self, forKey: .sectionText)
    }

    enum FieldKeys: String, CodingKey {
        case sectionIndex, sectionTitle, questionName, sectionText
    }
}

0 个答案:

没有答案