繁体   English   中英

核心数据与plist:制造武器和附件

[英]Core data vs plist: Making weapons and attachments

因此,我正在尝试与武器和附件建立一对多和多对多的关系,实际上要多得多,但这里要保持简单。 我可以制作一对多武器实体,以使用m16和ak47等特定武器。 然后,我可以制作一对多的附件实体,其中包含特定的实体,例如抑制器和红点瞄准器。 然后,我可以添加从m16到红点的逆向关系。

因此,我相信我可以使用核心数据的编辑器来制作此图,但是我不确定我是否可以实际使用它。 如果我希望用户能够选择m16,然后选择适当的附件,我将如何从核心数据中读取此附件? 我认为我做不到,因为我实际上并未制作带有所有可能附件的m16对象。 我真的希望这是有道理的。

我开始列出所有这些信息,但是很麻烦,因为现在我需要手工建立许多多对多的关系。

我只是在寻找前进的方向,所以我不会花很多时间去寻找效率最低的方法。

如果要在模型对象之间建立关系,请远离桩头。

对于您的特定情况,您想创建两个具有各自属性的实体: WeaponAttachment 关系说明如下:

武器<<->>附件

附件<<->>武器

因此,从概念上讲,您拥有可以包含许多附件的武器,并且附件可以是许多武器的一部分。

考虑到这一点,您可以使用所选的Weapon实例填充数据库,并可以使用Attachment

完成后,您只需通过关系为武器分配附件(或通过反向关系将武器附加到附件)。

最后回答您的问题,如果您希望用户选择某个Weapon实例然后选择其附件,前提是您已经有可供选择的附件实例,这就像获取对武器实例的引用一样简单,获取所有附件并将其作为选项呈现给用户。

被纠察队员加入到关系中,您就可以开始了。

查看Apple提供的食谱示例,以获取一些可能对您有帮助的代码。

[编辑以评论您的意见]

如果要这么简单,那就忘了CoreData吧。 只需为您的突击步枪创建一个plist,并使每个突击步枪都成为具有两个键的NSDictionary,一个用于突击步枪名称(NSString *),另一个用于其附件(NSArray *)。 一个例子:

weapon1 {
          name: @"Weapon name here"
          attachments: [
                        item0: @"Attachment 1"
                        item1: @"Attachment 2"
                        item2: @"Attachment 3"
                        ...
                       ]
        }

weapon2 {
         ... // Keep adding weapon names & attachments
        }

然后,您可以将武器1,武器2等放入NSArray中以将它们组合在一起。 假设上面的武器都是突击步枪,那么这可以成为您的AssaultRiffles plist,可以使用标准KVC方法加载和访问。 这是一个例子:

NSArray *weaponArray = // Method to load your plist here
for (NSDictionary *weapon in weaponArray)
{
    NSString *weaponName = [weapon objectForKey:@"name"];
    NSLog (@"weaponName is %@", weaponName);
}

如果您不想为每种武器类型使用单独的弹夹,则可以根据需要将它们简单地嵌套在数据集中-可以是数组或字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM