首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >核心数据vs plist:制作武器和附件

核心数据vs plist:制作武器和附件
EN

Stack Overflow用户
提问于 2011-04-02 07:49:49
回答 1查看 247关注 0票数 0

所以我试图用武器和附件建立一对多和多对多的关系,实际上要多得多,但这里要保持简单。我可以创建一个一对多的武器实体,用于特定的武器,如m16和ak47。然后,我可以创建一个具有特定实体的一对多附件实体,如suppressor和red dot sight。然后我可以添加关系,比如从m16到红点的反向关系。

因此,我相信我可以使用核心数据的编辑器来制作这个图表,但我不确定我是否真的可以使用它。如果我希望用户能够选择一个m16,然后选择适当的附件,我该如何从核心数据中读取它呢?我认为我做不到,因为我实际上并没有创建包含所有可能附件的m16对象。我真的希望这是有意义的。

我开始制作所有这些信息的plist,但这很糟糕,因为现在我有很多需要手动创建的多对多关系。

我只是在寻找前进的方向,这样我就不会花很多时间走效率最低的道路。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-02 08:04:48

如果你想在你的模型对象之间建立关系,请远离plist。

对于您的特定情况,您希望创建两个具有各自属性的实体:WeaponAttachment。关系如下图所示:

武器<<-->>附件

附件<<-->>武器

所以从概念上讲,你的武器可以有很多附件,而且附件可以是许多武器的一部分。

考虑到这一点,您可以使用您选择的Weapon实例填充您的数据库,并且可以对Attachment执行相同的操作。

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

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

那些得到纠察权的人被添加到关系中,你已经准备好了。

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

在下面编辑您的评论

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

代码语言:javascript
复制
weapon1 {
          name: @"Weapon name here"
          attachments: [
                        item0: @"Attachment 1"
                        item1: @"Attachment 2"
                        item2: @"Attachment 3"
                        ...
                       ]
        }

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

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

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

如果你不想为每个武器类型单独的plist,简单地根据你的需要将它们全部嵌套在一个数据集中-它可以是一个数组或字典。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5520037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档