我注意到在一個完整的Core Data進程中有兩個不同的提取請求。Core Data中的兩個不同的提取請求
取請求甲: 上下文(MOC)例如從磁盤通過創建一個取請求並執行它(executeFetchRequest)獲取數據存儲器。
取請求乙: 一個FRC實例是init與另一讀取請求時,從存儲器中取出數據(指定context),以存儲器,這恰好自動所以無需「執行」這種取。取請求A和取請求乙
1.A和B的上下文必須取B的相同一個
2.結果之間
連接是取甲
的結果的子集問題 我想知道我的理解是否絕對正確。請指出任何不準確的陳述和誤解。謝謝。
示例代碼
取A(執行顯式):從磁盤到存儲器
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Photo"];
request.predicate = [NSPredicate predicateWithFormat:@"unique = %@", [flickrInfo
objectForKey:FLICKR_PHOTO_ID]];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSError *error = nil;
// execute the fetch
NSArray *matches = [context executeFetchRequest:request error:&error];
取B(automatcally):從存儲器到存儲器
- (void)setupFetchedResultsController
{
NSFetchRequest *request =
[NSFetchRequest fetchRequestWithEntityName:@"Photo"];
request.sortDescriptors =
[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"title"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)]];
request.predicate = [NSPredicate predicateWithFormat:@"whoTook.name = %@", self.photographer.name];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.photographer.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
}
我想你誤解了帖子中「關係」的含義。你在談論作爲實體屬性的關係。但是在帖子中,「A和B之間的關係」意思是「獲取請求A和獲取請求B之間的連接是什麼」。這不是關於實體。 – Philip007 2012-08-04 21:29:22
我在帖子中將「關係」一詞替換爲「連接」。希望它能澄清這個問題。 – Philip007 2012-08-04 21:33:16