【发布时间】:2015-03-24 18:00:17
【问题描述】:
我是 CoreData 的新手,我正在学习一些教程。
这是我的数据模型:
我想构建类似于实时乐谱的东西。所以我添加了一些遵循这种格式的演示数据:
// -------------------------------------------------------------------------
// -- GW : 1 2
// | |
// Premier League Primera
// / \ |
// Chelsea vs M.City Arsenal vs Liverpool Real Mad vs Barcelona
// -------------------------------------------------------------------------
我可以验证它们是否已保存,正如您从下面的屏幕截图中看到的那样:
所以,现在我需要做的就是将这些数据提取到我的应用程序中。我已经添加了这些调试功能:
# pragma -
# pragma mark - different fetch functions
- (void) fetchGameweeksAndLeagues {
/*
Set up the fetched results controller.
*/
NSLog(@"Fetch Gameweeks and Leagues");
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entityGW = [NSEntityDescription entityForName:@"GameWeek" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entityGW];
// Set the batch size to a suitable number.
[fetchRequest setFetchBatchSize:20];
NSError *fetchError = nil;
NSArray *result = [self.managedObjectContext executeFetchRequest:fetchRequest error:&fetchError];
if (!fetchError) {
for (NSManagedObject *managedObject in result) {
NSLog(@"GwId:%@, League: %@", [managedObject valueForKey:@"gwId"], [[managedObject valueForKey:@"leagues"] valueForKey:@"leagueName"]/*,[[managedObject valueForKey:@"matches"] valueForKey:@"homeTeam"],[[managedObject valueForKey:@"matches"] valueForKey:@"awayTeam"]*/);
}
} else {
NSLog(@"Error fetching data.");
NSLog(@"%@, %@", fetchError, fetchError.localizedDescription);
}
}
-(void) fetchMatchesForLeagueWithId/*:(NSNumber*)leagueId*/
{
NSLog(@"Fetch Matches for specific League");
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entityLeague = [NSEntityDescription entityForName:@"League" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entityLeague];
NSError *fetchError = nil;
NSArray *result = [self.managedObjectContext executeFetchRequest:fetchRequest error:&fetchError];
if (!fetchError) {
for (NSManagedObject *managedObject in result) {
NSLog(@"League: %@, Teams : %@ vs %@", [managedObject valueForKey:@"leagueName"],[[managedObject valueForKey:@"matches"] valueForKey:@"homeTeam"],[[managedObject valueForKey:@"matches"] valueForKey:@"awayTeam"]);
}
} else {
NSLog(@"Error fetching data.");
NSLog(@"%@, %@", fetchError, fetchError.localizedDescription);
}
}
所以,我的输出是:
2015-03-24 17:38:42.236 SofaRef[73743:2215371] GwId:1, League: {(
"Premier League"
)}
2015-03-24 17:38:42.236 SofaRef[73743:2215371] GwId:2, League: {(
Primera
)}
2015-03-24 17:38:42.236 SofaRef[73743:2215371] Fetch Matches for specific League
2015-03-24 17:38:42.237 SofaRef[73743:2215371] League: Primera, Teams : {(
"Real Madrid"
)} vs {(
Barcelona
)}
2015-03-24 17:38:42.237 SofaRef[73743:2215371] League: Premier League, Teams : {(
Chelsea,
Arsenal
)} vs {(
Liverpool,
"Man.City"
)}
那么,我怎样才能以正确的顺序打印它们?
我想以与它们在数据库中相同的方式并以相同的顺序实际打印它们。这意味着打印切尔西 vs 曼城和阿森纳 vs 利物浦,而不是“按”列“分组” - 我想将它们作为“行”获取。
【问题讨论】:
标签: ios objective-c core-data