Jia*_*Yow 11
我很快为你准备了一个模型:

所以,基本上"人"是你的人,它与"宠物"有关系 - 这是一种"与众不同"的关系.一个人可以有多只宠物.
然后有一个"宠物"实体.它是一个抽象的实体,代表任何宠物,猫和狗.它与"人"的"宠物"呈反比关系.因此,从任何宠物,您可以随时追溯到相应的所有者.此外,"宠物"的每个子类都有一些共同的属性,如年龄/姓名/体重.
此外,子类(实体具有"宠物"和"父实体",如"狗"和"猫"),可以在除了"宠物",属性像"狗"自己的属性有一个"barkSound" ,"猫"有一个"meowSound".
您当然可以根据需要将多少人添加到存储中,这与数据模型无关.
要检索信息,只需使用获取请求来获取所有人员.然后循环访问他们的"宠物"属性,为他们的宠物获取NSSets.您可以循环访问这些集以访问宠物的信息.
这是一个如何获取所有人,然后所有宠物的例子:
// Fetch all persons
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:yourContext];
[fetchRequest setEntity:entity];
NSError *error = nil;
NSArray *fetchedObjects = [yourContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
// Handle error case
}
[fetchRequest release];
// Loop through all their pets
for (Person* person in fetchedObjects)
{
NSLog(@"Hello, my name is %@", person.name);
for (Pet* pet in person.pets) {
if ([pet isKindOfClass:[Dog class]])
{
NSLog(@"Woof, I'm %@, owned by %@", pet.name, pet.owner.name);
}
else
{
NSLog(@"Meow, I'm %@, owned by %@", pet.name, pet.owner.name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您也可以在不通过其所有者的情况下获取宠物:
// Fetch all persons
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Pet" inManagedObjectContext:yourContext];
[fetchRequest setEntity:entity];
[fetchRequest setIncludesSubentities:YES]; // State that you want Cats and Dogs, not just Pets.
NSError *error = nil;
NSArray *fetchedObjects = [yourContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
// Handle error case
}
[fetchRequest release];
Run Code Online (Sandbox Code Playgroud)
上面的代码未经过测试,可能包含拼写错误,但会告诉您如何执行此操作.
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |