From 7481add810ef798c0f678d782d7d8fb9e6ff4d46 Mon Sep 17 00:00:00 2001 From: Nikita Zhuk Date: Wed, 2 Jun 2010 16:45:52 +0800 Subject: [PATCH] - Added support for fetched properties - To generate @property declarations for fetched properties in mogenerator templates, use the following template code: <$foreach FetchedProperty noninheritedFetchedProperties do$> @property (nonatomic, readonly) NSArray *<$FetchedProperty.name$>; <$endif$><$endif$><$endforeach do$> --- mogenerator.m | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/mogenerator.m b/mogenerator.m index 15ff65c2..ef890b4d 100644 --- a/mogenerator.m +++ b/mogenerator.m @@ -10,6 +10,25 @@ NSString *gCustomBaseClass; +@interface NSEntityDescription (fetchedPropertiesAdditions) +- (NSDictionary *)fetchedPropertiesByName; +@end + +@implementation NSEntityDescription (fetchedPropertiesAdditions) +- (NSDictionary *)fetchedPropertiesByName +{ + NSMutableDictionary *fetchedPropertiesByName = [NSMutableDictionary dictionary]; + + for (NSPropertyDescription *property in [self properties]) + { + if([property isKindOfClass:[NSFetchedPropertyDescription class]]) + [fetchedPropertiesByName setObject:property forKey:[property name]]; + } + + return fetchedPropertiesByName; +} +@end + @implementation NSManagedObjectModel (entitiesWithACustomSubclassVerbose) - (NSArray*)entitiesWithACustomSubclassVerbose:(BOOL)verbose_ { NSMutableArray *result = [NSMutableArray array]; @@ -76,6 +95,17 @@ - (NSArray*)noninheritedRelationships { return [[self relationshipsByName] allValues]; } } +/** @TypeInfo NSFetchedPropertyDescription */ +- (NSArray*)noninheritedFetchedProperties { + NSEntityDescription *superentity = [self superentity]; + if (superentity) { + NSMutableArray *result = [[[[self fetchedPropertiesByName] allValues] mutableCopy] autorelease]; + [result removeObjectsInArray:[[superentity fetchedPropertiesByName] allValues]]; + return result; + } else { + return [[self fetchedPropertiesByName] allValues]; + } +} #pragma mark Fetch Request support