Skip to content
Snippets Groups Projects
Commit a6fe3dd2 authored by cramakri's avatar cramakri
Browse files

Distinguish between the root model, which shows all entities, and the child...

Distinguish between the root model, which shows all entities, and the child model, which only shows children of a selected entity

SVN: 27183
parent 14dbe483
No related branches found
No related tags found
No related merge requests found
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
<attribute name="summaryHeader" optional="YES" attributeType="String" syncable="YES"/> <attribute name="summaryHeader" optional="YES" attributeType="String" syncable="YES"/>
</entity> </entity>
<fetchRequest name="EntitiesByPermIds" entity="CISDOBIpadEntity" predicateString="permId IN $PERM_IDS" fetchBatchSize="20"/> <fetchRequest name="EntitiesByPermIds" entity="CISDOBIpadEntity" predicateString="permId IN $PERM_IDS" fetchBatchSize="20"/>
<fetchRequest name="EntityAndChildren" entity="CISDOBIpadEntity" predicateString="SELF == $ENTITY OR permId IN $CHILDREN" fetchBatchSize="20"/>
<elements> <elements>
<element name="CISDOBIpadEntity" positionX="160" positionY="192" width="128" height="210"/> <element name="CISDOBIpadEntity" positionX="160" positionY="192" width="128" height="210"/>
</elements> </elements>
......
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
_selectedObject = nil; _selectedObject = nil;
if (self.parentModel) { if (self.parentModel) {
self.fetchedResultsController = parentModel.fetchedResultsController;
self.managedObjectContext = parentModel.managedObjectContext; self.managedObjectContext = parentModel.managedObjectContext;
} }
...@@ -130,12 +129,8 @@ ...@@ -130,12 +129,8 @@
#pragma mark - Fetched results controller #pragma mark - Fetched results controller
- (NSFetchedResultsController *)fetchedResultsController - (void)initializeRootFetchedResultsController
{ {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName: @"CISDOBIpadEntity" inManagedObjectContext: self.managedObjectContext]; NSEntityDescription *entity = [NSEntityDescription entityForName: @"CISDOBIpadEntity" inManagedObjectContext: self.managedObjectContext];
[fetchRequest setEntity:entity]; [fetchRequest setEntity:entity];
...@@ -146,7 +141,7 @@ ...@@ -146,7 +141,7 @@
NSArray *sortDescriptors = @[groupSortDescriptor, summaryHeaderSortDescriptor]; NSArray *sortDescriptors = @[groupSortDescriptor, summaryHeaderSortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors]; [fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: @"group" cacheName: @"Master"]; NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: @"group" cacheName: @"Root"];
aFetchedResultsController.delegate = self; aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController; self.fetchedResultsController = aFetchedResultsController;
...@@ -156,6 +151,48 @@ ...@@ -156,6 +151,48 @@
NSLog(@"Unresolved error %@, %@", error, [error userInfo]); NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort(); abort();
} }
}
- (void)initializeChildFetchedResultsController
{
NSAssert(_parentModel.selectedObject != nil, @"Cannot initialize the model as a child of an existing model.");
NSEntityDescription *entity = [NSEntityDescription entityForName: @"CISDOBIpadEntity" inManagedObjectContext: self.managedObjectContext];
NSManagedObjectModel *model = [entity managedObjectModel];
NSDictionary *fetchVariables =
[NSDictionary dictionaryWithObjectsAndKeys:
_parentModel.selectedObject, @"ENTITY",
_parentModel.selectedObject.childrenPermIds, @"CHILDREN",
nil];
NSFetchRequest *fetchRequest = [model fetchRequestFromTemplateWithName: @"EntityAndChildren" substitutionVariables: fetchVariables];
NSSortDescriptor *groupSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"group" ascending: NO];
NSSortDescriptor *summaryHeaderSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"summaryHeader" ascending: YES];
NSArray *sortDescriptors = @[groupSortDescriptor, summaryHeaderSortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: @"group" cacheName: _parentModel.selectedObject.permId];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
// TODO Implement error handling
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
if (nil == _parentModel || nil == _parentModel.selectedObject)
[self initializeRootFetchedResultsController];
else
[self initializeChildFetchedResultsController];
return _fetchedResultsController; return _fetchedResultsController;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment