让我们假设你有一个数据模型Car。汽车有许多属性,如轮子,引擎,窗户等。 假设您想在零件清单中表示这些属性,您将如何将其构建到模型中? 挑战在于,属性应该通过列表项以及属性本身可读和设置。
有点像
car.engine = Engine()
应该具有与以下相同的效果:
car.parts["engine"] = Engine()
虽然在我看来使用字符串键不是正确的解决方案。
答案 0 :(得分:1)
为此,您可以使用Generic
。
1)首先设计一个Generic protocol
。
2)为车轮,引擎和车窗制作单独的模型,每个模型必须符合您在步骤1中制作的Protocol
。
3)然后在Car
模型中,将部件列表设为:
假设您创建了一个名为Parts
的协议,并且具有名为Wheel,Engine and Window
的单独模型。
let carParts:[Parts] = [Wheel(),Engine(),Window()]
要单独设置属性,您可以遍历集合并检查要直接为其设置属性的模型。