2013-05-01 4 views
1

내가 엔티티와 코어 데이터 모델은 속성이라고 중 하나는 속성의 무리를 포함 SeasonInfo전화가 많은 관계 데이터를 가져 오기 (INT 16). SeasonInfo에는 GameInfo이라는 엔티티 (SeasonInfo에 정의 된 관계 이름은 게임)와 일대 다 관계가 있습니다.코어 데이터

인구가 많은 데이터베이스에는 계절에 따라 (한 해에 한 번씩) 많은 데이터가 포함되어 있습니다. 각 계절마다 게임 목록이 있습니다. 각 계절마다 게임이 있습니다. 내있는 TableView의 콘트롤에서 SeasonInfo < ---- >>GameInfo는

나는 주어진 년 동안 SeasonInfo에 액세스하려면 다음을 사용 보인다

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription 
           entityForName:@"SeasonInfo"  inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 

// Set up the cell... 
SeasonInfo *info = [seasonInfoArray objectAtIndex:indexPath.row]; 

//Put the Year as the Main title of the Row 
yearLabel.text =[NSString stringWithFormat: @"%@", info.year]; 

큰 일을 .. 하지만 지금은 특정 시즌의 게임에 액세스하는 방법을 알 수 없습니다. 이 테이블 뷰에서 특정 연도를 선택하면 다른 테이블 뷰 컨트롤러에 NSArray 게임을 전달하고 싶습니다 ... 뷰간에 데이터를 전달하는 방법을 알고 있습니다. 뷰를 채우는 방법을 알 수 없습니다. "gamesArray"를 클릭 한 다음 일정보기로 전환하십시오.

답변

0

특정 시즌에만 게임을 가져와야하는 경우 다음과 같이 가져 오기 전에 술어를 사용할 수 있습니다 (int 32에서 작동하며 문자열 형식 지정자 (% d)는 int16에 필요한 모든 것으로 변경됩니다).) :

NSPredicate * equalPredicate = [NSPredicate predicateWithFormat : @ "year == % d", year]; [fetchRequest setPredicate : equalPredicate];

당신이 그것을하고 싶지 않고 모든 것을 모으고 싶다면 executeFetchRequest가 완료되고 성공적인 완료 블록에있는 경우 결과의 NSArray *가 제공됩니다.

for (SeasonInfo * seasonInfo in results) 
{ 
    if ([seasonInfo year] == <whatever year you want>) 
    { 
     //save this seasonInfo for use, this contains the games you're interested in. 
    } 
} 

그 후, 도움을 seasonInfo

for (GameInfo * gameInfo in [seasonInfo games]) 
{ 
    // Do what's needed with the gameInfo. 

} 
+0

도움 주셔서 감사합니다. –

1

코어 데이터에 관계를 제대로 작성했다면 게임 속성에 대한 액세스로 게임 관계에 액세스 할 수 있습니다.

그래서 info.games는 해당 SeasonInfo에 대한 GameInfo의 NSSet을 반환해야합니다.

+0

감사에서 특정 게임에서 얻을 ... 문제는이 코드를 사용하여 작업을 얻을 수있었습니다 : NSSet를 * gameSet = info.games; –