gpt4 book ai didi

ios - 是否可以动态创建 swift 协议(protocol)的可选和非可选版本?

转载 作者:搜寻专家 更新时间:2023-11-01 07:21:54 25 4
gpt4 key购买 nike

我需要关于我应该采取的最佳方法的建议。

我有很多来自服务器的数据需要解析并转换成结构。假设我正在从服务器获取 seller 信息,该结构可能如下所示:

struct Seller {
var firstName: String?
var lastName: String?
var address: String?
}

我为此创建了一个协议(protocol),并让我的卖家结构采用它。所以我的代码现在看起来像这样:

protocol SellerProtocol {
var firstName: String {get set}
var lastName: String {get set}
var address: String {get set}
}

extension Seller: SellerProtocol {
var firstName: String?
var lastName: String?
var address: String?
}

问题:有没有办法动态地使这个协议(protocol)中的所有变量都成为非可选的?

问题是,我有很多这样的可选协议(protocol),但是,我还需要声明一个完全相同协议(protocol)的非可选版本,以便其他类可以遵守它。我只希望与服务器直接交互的结构是可选类型(因为来自服务器的数据可以包含 nils),但是在我处理来自服务器的信息之后,我想创建一个非可选结构。

那么我是否需要维护完全相同协议(protocol)的两个版本?可选版本和非可选版本?

最佳答案

您要做的是将协议(protocol)声明为非可选的,然后使用可失败的初始化程序来创建您的结构。这样,如果您缺少某些属性,对象初始化将失败,但如果初始化成功,您将拥有所需的所有数据。

如果您需要帮助创建 failable initializer,您可以引用此链接.

关于ios - 是否可以动态创建 swift 协议(protocol)的可选和非可选版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38466022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com