我在核心数据中有一个问题:
项目中有2个实体,Books
和Pages
;
在实体book
中创建了3个用户Books
的用户;
在实体page
中创建了多个用户Pages
的用户;
关系inbetween是一个page
属于一个book
,一个book
有很多页面。
和我的问题:有3个book
具有相同的对象名称“book”,每个都有唯一的属性.bookName
:@"metal"
; @"plastic"
; {{1 }}。如何使用@"glass"
将page
设置为book
?
.bookName = @"glass"
感谢您的阅读,我卡在这里:一天,非常感谢您的帮助,爱你!
答案 0 :(得分:1)
我不确定你的意思。如果要将页面作为书籍的子集插入,则需要以下代码行:
[book addPageToBookObject:page]; // the method will be the relationship name
如果你想从页面对象中获取书籍,你需要从页面到书籍的反向关系。
答案 1 :(得分:1)
如果您需要查找特定图书,则需要使用NSFetchRequest
向Core数据询问。
需要相当多的代码,因此您可能会为Book
类添加一个方便的方法,如下所示:
+(Book*)bookWithName:(NSString*)name
{
// 0. I assume you have something like this to get the context…
NSManagedObjectContext* context = [NSManagedObjectContext threadLocalContext];
// 1. Create an empty request
NSFetchRequest* request = [[[NSFetchRequest alloc] init] autorelease];
// 2. Set the entity description for the object to fetch
NSEntityDescription* entity = [NSEntityDescription entityForName:@"Book"
inManagedObjectContext:context];
[request setEntity:entity];
// 3. Set a predicate asking for objects with a mathing bookName property
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"%K LIKE[cd] %@",
@"bookName",
name];
[request setPredicate:predicate];
// 4. Execute the request on the managed object context.
NSArray* objects = [context executeFetchRequest:request error:NULL];
// 5. Result is an array, maybe handle empty array and many objects?
return [objects lastObject];
}