开发者

Core Data & Generating Model Entities

Standard newbie question. I've created a data model for an iOS application. I am able to create, update and delete entities within the model from various views by using the NSEntityDescription object.

Say if I had a mutable array of objects returned from a fetch request. How can I loop through each one when I do not have a generated object definition from the entity 开发者_StackOverflow社区model? By generated object definition I mean, a header and body class definition of the entity described in the data model package.


All CoreData entities derive from NSManagedObject and all the database data from those can be accessed via key value encoding. The minimum you need to know can be gained from the Model. You don't necessarily require the headers.

For example an entity PersonEntity which has a relationship to NameEntity with attribute firstname

NSArray *results = [managedObjectContext queryEntityForName:@"PersonEntity" predicateFormat:nil argumentArray:nil];

for(NSManagedObject *object in results)
{
NSString *name = [object valueForKeyPath:@"nameobject.firstname";
[self doSomething:name];
}

queryEntityForName is my own category. You might find it useful.

@implementation NSManagedObjectContext(VMQueryAdditions)

-(NSArray *)queryEntityForName:(NSString *)name predicateFormat:(NSString *)pstring argumentArray:(NSArray *)arr
{
    NSEntityDescription *entity = [NSEntityDescription entityForName:name inManagedObjectContext:self];
    NSFetchRequest *fetch = [[[NSFetchRequest alloc] init] autorelease];

    [fetch setEntity:entity];
    NSPredicate *pred;

    if(pstring)
    {
        if(arr) pred = [NSPredicate predicateWithFormat:pstring argumentArray:arr];
        else    pred = [NSPredicate predicateWithFormat:pstring];
        [fetch setPredicate:pred];
    }

    NSError *error = nil;

    NSArray *results = [self executeFetchRequest:fetch error:&error];

    if (error) {
        NSLog(@"MOC Fetch - Unresolved error %@, %@", error, [error userInfo]);
        return [NSArray array];
    }

    return results;

}

@end
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜