Xcode 了解核心数据查询(在数据中搜索唯一属性)
由于我来自那些广泛使用sqlite的程序员,也许我很难理解核心数据是如何管理许多关系的 对于我的游戏,我在纸上有一个简单的数据库模式Xcode 了解核心数据查询(在数据中搜索唯一属性),xcode,core-data,one-to-many,Xcode,Core Data,One To Many,由于我来自那些广泛使用sqlite的程序员,也许我很难理解核心数据是如何管理许多关系的 对于我的游戏,我在纸上有一个简单的数据库模式 Entity: Level - this will be the table that has all information about each game level Attributes: levelNumber(String), simply the level number : levelTime(String), the amou
Entity: Level - this will be the table that has all information about each game level
Attributes: levelNumber(String), simply the level number
: levelTime(String), the amount of time you have to finish the level(this time will vary with the different levels)
: levelContent(String), a list of items for that level(and that level only) separated by commas
: levelMapping(String), how the content is layed out(specific for a unique level)
因此,基本上在核心数据中,我想设置数据库,以便在我的fetchRequest中说:
给我级别1的levelTime、levelContent和levelMapping。或者
不管我想要什么级别
我将如何建立我的关系,以便我可以提出这种类型的请求?
此外,我已经准备好了所有的数据,并提前知道它是什么。有没有办法在XCode中填充实体及其属性 正如您所描述的,它是一个名为Level的单核心数据实体,具有四个字符串属性。因为只有一个实体,所以没有关系。您将创建一个实体并添加属性,使其看起来与上面描述的一样: 仅获取一个级别是基本的核心数据获取:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Level"];
NSString *levelNumber = @"1";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"levelNumber = %@", levelNumber];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *results = [[self managedObjectContext] executeFetchRequest:request error:&error];
NSManagedObject *level = nil;
if ([results count] > 0) {
level = [results objectAtIndex:0];
}
// Use level...
如果是我,我会用其中一种数字类型来表示levelNumber,但也许你有理由在那里使用字符串。我也可能会将levelContent分解为一个单独的实体,因为逗号分隔的字符串很难看,不管你如何分割它们,b你可能希望这些项有更多的属性,而一个单独的实体会保存这些属性。你只描述了一个实体,除非你以某种方式创建了一个以上的SQLite表。该实体似乎与自身无关,没有其他级别属性。我错过什么了吗?您认为可能存在什么关系?在一个普通的sqlite数据库中,您将拥有这个级别的表。这将添加我在上面描述的属性。我会在表1中插入,5:00,someString,someString,按照我的帖子的顺序。然后我会插入2,10:00,一些字符串,一些字符串。假设我有20个级别。我希望能够查询任何级别编号的levelTime、levelContent和levelMapping。因此,在sqlite术语中,从levelNumber为?1-20的级别选择levelTime、levelContent和levelMapping。我宁愿这样做,也不愿创建20个不同的实体。谢谢你的信息和建议,汤姆。我问题的第二部分涉及在XCode中预填充数据库,因为我已经提前知道了数据?除非我是瞎子,否则我看不见路。我希望能够说,‘好的,对于级别1,我希望映射、时间和内容是这样的。’。。第二级。。这个和这个…等等。我想另一个问题是,我该如何将某些属性与某个唯一的级别编号联系起来?如果不能在XCode中直观地完成,那么必须以编程方式完成,我认为我不理解第二个问题。您将使用Level所需的任何属性创建一个新实例,并保存结果。一旦您查找它,您就可以通过键值编码访问这些属性。你所做的只是向一个对象请求一个属性值,和其他任何对象一样。至于预填充数据存储,Xcode对你没有帮助。一种选择是使用一些只调试的代码构建数据存储,然后复制存储文件以进行常规应用程序构建。另一种方法是在Mac app store中使用第三方应用程序(如Core Data Editor)来输入数据。好的,感谢您对第二个问题的澄清。想知道为什么苹果不允许你在XCode中添加数据?我的意思是,他们创造了这个伟大的核心数据概念,然后他们让你悬而未决,似乎你必须去做的事情,如下载一个编辑器。