是的,你需要使用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];
這裏要注意的一點是,你需要建立反向關係,在你的日常/運動對象來比較謂詞當前用戶。你有哪些我認爲是反向關係的用戶ID?
所以從評論我帶你沒有設置反比關係,所以這裏是一個粗略的例子。使該用戶的日常你這樣做的時候
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;
然後確保
當使您的商店一個新的用戶,您將獲得somethign這樣保存管理對象以將更改寫入數據存儲。然後這將鏈接常規端的2個對象,不要忘記將它鏈接到用戶端,以實現嚴格的反向關係。
,以獲取用戶的完全像我上面提到的:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSError* error;
NSArray* Users = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
如果數組中有1個用戶,然後它的第一要素,如果你有很多用戶,然後使用謂詞基礎上找到了一個你的FB ID。
停止思考CoreData是數據庫術語。一旦你有你的用戶,你所要做的就是myUser.routines(或者你的任何關係)。把關係看作屬性。 – sosborn 2013-04-28 17:40:57