예 특정 사용자에 관련된 데이터를 얻을 자 NSPredicate를 사용해야합니다. UICollection 뷰를 채우는 경우 NSFetchedResultsController를 읽는 것이 좋습니다.
NSFetchRequest *fetchRequestItems = [[NSFetchRequest alloc] init];
NSEntityDescription *entityItem = [NSEntityDescription entityForName:@"Routine" inManagedObjectContext:self.managedObjectContext];
[fetchRequestItems setEntity:entityItem];
User* myUser = //Code for getting current user out of data store based on some paramator
[fetchRequestItems setPredicate:[NSPredicate predicateWithFormat:@"userID == %@",myUser]];
//Sort by last edit ordered
NSArray *sortDescriptors = [NSArray arrayWithObjects:nil];
[fetchRequestItems setSortDescriptors:sortDescriptors];
NSArray* Routines = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
여기서 주목해야 할 것은 것은 당신이 당신의 일상에 역의 관계를 설정할 필요가있다/운동 술어에서 현재 사용자에 대해 비교하는 객체. 당신이 가지고있는 userID는 역 관계입니까?
의견에서 나는 반항 관계를 설정하지 않으므로 여기서 거친 예를 들어 보겠습니다. 상점에 새로운 사용자를 만들 때
는이 같은 somethign 얻을 것입니다 :
User *thisUser = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext];
thisUser.eMail = emailAddress.text;
//And any other paras you might have
을 그럼 당신이 할 것 해당 사용자에 대한 일상적인시 : 다음
Routine *newRoutine = [NSEntityDescription insertNewObjectForEntityForName:@"Routine" inManagedObjectContext:managedObjectContext];
newRoutine.userId = thisUser;
을해야합니다을 변경 사항을 데이터 저장소에 기록하려면 관리 객체를 저장하십시오. 이것은 루틴쪽에있는 2 개의 객체를 링크합니다. 엄격한 역관계를 위해 Users 쪽에서 링크하는 것을 잊지 마십시오. 내가 위에서 언급 한 것처럼
정확하게 사용자의 효율적으로 활용하려면 다음 작업을
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSError* error;
NSArray* Users = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
당신이 배열 한 사용자가 다음의 첫 번째 요소가있는 경우, 당신은 다음에 따라 하나를 찾기 위해 술어를 사용하는 많은 사용자가있는 경우 FB ID.
CoreData에 대한 생각은 데이터베이스 용어입니다. 사용자를 확보하면 myUser.routines (또는 관계가 무엇이든간에)해야합니다. 관계를 속성으로 생각하십시오. – sosborn