我想讓代碼中加載多個實體更易於管理。下面的代碼附加到一個可以加載1000次以上的對象,所以我把它放在一個循環中並附加了一個可管理的實體數組。如何循環加載核心數據中多個實體的數據,代碼量最少?
問題是,因爲我不知道單個對象中是否有可用的密鑰,所以當我在董事實體上時,我遇到了[singleObject valueForKey:@「actor」]的崩潰。這是因爲關鍵的「演員」不存在。在這裏看到我的代碼。
NSArray *entities = [[NSArray alloc] initWithObjects: @"actors", @"directors", @"subtitles", @"audios", nil];
for (NSString *anEntity in entities)
{
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:anEntity inManagedObjectContext:context];
[request setEntity:entityDescription];
NSArray *objects = [context executeFetchRequest:request error:&error];
if (objects == nil) {
// error
}
for (NSManagedObject *singleObject in objects)
{
if (singleObject != nil)
{
if ([singleObject valueForKey:@"actor"] != nil)
{
[self.actors addObject:[singleObject valueForKey:@"actor"]];
}
else if ([singleObject valueForKey:@"director"] != nil)
{
[self.directors addObject:[singleObject valueForKey:@"director"]];
}
else if ([singleObject valueForKey:@"subtitle"] != nil)
{
[self.subtitles addObject:[singleObject valueForKey:@"subtitle"]];
}
else if ([singleObject valueForKey:@"audio"] != nil)
{
[self.audios addObject:[singleObject valueForKey:@"audio"]];
}
}
}
}
[entities release];
[request release];'
我怎樣才能讓這段代碼的工作,並大幅擴張,而不必把一幫嘗試/漁獲物周圍的一切?