diff --git a/DCTCoreData.xcodeproj/project.pbxproj b/DCTCoreData.xcodeproj/project.pbxproj index 54226fc..0d39b8d 100644 --- a/DCTCoreData.xcodeproj/project.pbxproj +++ b/DCTCoreData.xcodeproj/project.pbxproj @@ -30,6 +30,7 @@ 24714BB5124F963D00817366 /* MainWindow_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 24714BB3124F963D00817366 /* MainWindow_iPad.xib */; }; 24714BB8124F963D00817366 /* DCTCoreDataAppDelegate_iPhone.m in Sources */ = {isa = PBXBuildFile; fileRef = 24714BB7124F963D00817366 /* DCTCoreDataAppDelegate_iPhone.m */; }; 24714BBB124F963D00817366 /* DCTCoreDataAppDelegate_iPad.m in Sources */ = {isa = PBXBuildFile; fileRef = 24714BBA124F963D00817366 /* DCTCoreDataAppDelegate_iPad.m */; }; + 24971C25125381B000D23773 /* NSPredicate+DCTExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 24971C24125381B000D23773 /* NSPredicate+DCTExtras.m */; }; 249EA218125345580043BC85 /* NSManagedObject+DCTAutomatedSync.m in Sources */ = {isa = PBXBuildFile; fileRef = 249EA217125345580043BC85 /* NSManagedObject+DCTAutomatedSync.m */; }; 249EA22F125356CA0043BC85 /* NSManagedObject+DCTExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = 249EA22E125356CA0043BC85 /* NSManagedObject+DCTExtras.m */; }; 24A94243125132C5006E8BCD /* NSManagedObject+DCTAutomatedSetup.m in Sources */ = {isa = PBXBuildFile; fileRef = 24A94242125132C5006E8BCD /* NSManagedObject+DCTAutomatedSetup.m */; }; @@ -78,6 +79,8 @@ 24714BB7124F963D00817366 /* DCTCoreDataAppDelegate_iPhone.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DCTCoreDataAppDelegate_iPhone.m; sourceTree = ""; }; 24714BB9124F963D00817366 /* DCTCoreDataAppDelegate_iPad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DCTCoreDataAppDelegate_iPad.h; sourceTree = ""; }; 24714BBA124F963D00817366 /* DCTCoreDataAppDelegate_iPad.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DCTCoreDataAppDelegate_iPad.m; sourceTree = ""; }; + 24971C23125381B000D23773 /* NSPredicate+DCTExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+DCTExtras.h"; sourceTree = ""; }; + 24971C24125381B000D23773 /* NSPredicate+DCTExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSPredicate+DCTExtras.m"; sourceTree = ""; }; 249EA216125345580043BC85 /* NSManagedObject+DCTAutomatedSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSManagedObject+DCTAutomatedSync.h"; sourceTree = ""; }; 249EA217125345580043BC85 /* NSManagedObject+DCTAutomatedSync.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSManagedObject+DCTAutomatedSync.m"; sourceTree = ""; }; 249EA22D125356CA0043BC85 /* NSManagedObject+DCTExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSManagedObject+DCTExtras.h"; sourceTree = ""; }; @@ -205,30 +208,32 @@ 24714BC5124F972C00817366 /* DCTCoreData */ = { isa = PBXGroup; children = ( - 2426E38C1251DA9D00E170AF /* NSFetchedResultsController+DCTExtras.h */, - 2426E38D1251DA9D00E170AF /* NSFetchedResultsController+DCTExtras.m */, 2433E631124F9CE7002C81BD /* NSArray+DCTSortDescriptors.h */, 2433E632124F9CE7002C81BD /* NSArray+DCTSortDescriptors.m */, + 242555BA125127070095D2F6 /* NSAttributeDescription+DCTObjectCheck.h */, + 242555BB125127070095D2F6 /* NSAttributeDescription+DCTObjectCheck.m */, 24A9425C1251354B006E8BCD /* NSDictionary+DCTKeyForObject.h */, 24A9425D1251354B006E8BCD /* NSDictionary+DCTKeyForObject.m */, - 2433E622124F9A8A002C81BD /* NSFetchRequest+DCTInitMethods.h */, - 2433E623124F9A8A002C81BD /* NSFetchRequest+DCTInitMethods.m */, - 2433E617124F9806002C81BD /* NSManagedObjectContext+DCTDataFetching.h */, - 2433E618124F9806002C81BD /* NSManagedObjectContext+DCTDataFetching.m */, 242555BE125127D80095D2F6 /* NSEntityDescription+DCTObjectCheck.h */, 242555BF125127D80095D2F6 /* NSEntityDescription+DCTObjectCheck.m */, - 242555BA125127070095D2F6 /* NSAttributeDescription+DCTObjectCheck.h */, - 242555BB125127070095D2F6 /* NSAttributeDescription+DCTObjectCheck.m */, - 24A94263125136C0006E8BCD /* NSManagedObject+DCTOrdering.h */, - 24A94264125136C0006E8BCD /* NSManagedObject+DCTOrdering.m */, - 242555C21251289F0095D2F6 /* NSManagedObject+DCTRelatedObjects.h */, - 242555C31251289F0095D2F6 /* NSManagedObject+DCTRelatedObjects.m */, + 2426E38C1251DA9D00E170AF /* NSFetchedResultsController+DCTExtras.h */, + 2426E38D1251DA9D00E170AF /* NSFetchedResultsController+DCTExtras.m */, + 2433E622124F9A8A002C81BD /* NSFetchRequest+DCTInitMethods.h */, + 2433E623124F9A8A002C81BD /* NSFetchRequest+DCTInitMethods.m */, 24A94241125132C5006E8BCD /* NSManagedObject+DCTAutomatedSetup.h */, 24A94242125132C5006E8BCD /* NSManagedObject+DCTAutomatedSetup.m */, 249EA216125345580043BC85 /* NSManagedObject+DCTAutomatedSync.h */, 249EA217125345580043BC85 /* NSManagedObject+DCTAutomatedSync.m */, 249EA22D125356CA0043BC85 /* NSManagedObject+DCTExtras.h */, 249EA22E125356CA0043BC85 /* NSManagedObject+DCTExtras.m */, + 24A94263125136C0006E8BCD /* NSManagedObject+DCTOrdering.h */, + 24A94264125136C0006E8BCD /* NSManagedObject+DCTOrdering.m */, + 242555C21251289F0095D2F6 /* NSManagedObject+DCTRelatedObjects.h */, + 242555C31251289F0095D2F6 /* NSManagedObject+DCTRelatedObjects.m */, + 2433E617124F9806002C81BD /* NSManagedObjectContext+DCTDataFetching.h */, + 2433E618124F9806002C81BD /* NSManagedObjectContext+DCTDataFetching.m */, + 24971C23125381B000D23773 /* NSPredicate+DCTExtras.h */, + 24971C24125381B000D23773 /* NSPredicate+DCTExtras.m */, ); path = DCTCoreData; sourceTree = ""; @@ -317,6 +322,7 @@ 246A87431251E11A00DA85C3 /* DCTCDGroup+DCTManagedObjectAutomatedSetup.m in Sources */, 249EA218125345580043BC85 /* NSManagedObject+DCTAutomatedSync.m in Sources */, 249EA22F125356CA0043BC85 /* NSManagedObject+DCTExtras.m in Sources */, + 24971C25125381B000D23773 /* NSPredicate+DCTExtras.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/DCTCoreData/NSFetchedResultsController+DCTExtras.h b/DCTCoreData/NSFetchedResultsController+DCTExtras.h index 4fa0846..cddc119 100644 --- a/DCTCoreData/NSFetchedResultsController+DCTExtras.h +++ b/DCTCoreData/NSFetchedResultsController+DCTExtras.h @@ -35,7 +35,7 @@ */ #import - +#import @interface NSFetchedResultsController (DCTExtras) diff --git a/DCTCoreData/NSPredicate+DCTExtras.h b/DCTCoreData/NSPredicate+DCTExtras.h new file mode 100644 index 0000000..4272f5c --- /dev/null +++ b/DCTCoreData/NSPredicate+DCTExtras.h @@ -0,0 +1,45 @@ +/* + NSPredicate+DCTExtras.h + DCTCoreData + + Created by Daniel Tull on 16.06.2010. + + + + Copyright (C) 2010 Daniel Tull. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +@interface NSPredicate (DCTExtras) + ++ (NSPredicate *)dct_predicateWhereProperty:(NSString *)name equals:(NSObject *)object; ++ (NSPredicate *)dct_predicateWherePropertyIsNotNil:(NSString *)name; ++ (NSPredicate *)dct_predicateWhereStringPropertyIsNotNilAndNotEmpty:(NSString *)name; + +@end diff --git a/DCTCoreData/NSPredicate+DCTExtras.m b/DCTCoreData/NSPredicate+DCTExtras.m new file mode 100644 index 0000000..c2be2dd --- /dev/null +++ b/DCTCoreData/NSPredicate+DCTExtras.m @@ -0,0 +1,53 @@ +/* + NSPredicate+DCTExtras.m + DCTCoreData + + Created by Daniel Tull on 16.06.2010. + + + + Copyright (C) 2010 Daniel Tull. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "NSPredicate+DCTExtras.h" + +@implementation NSPredicate (DCTExtras) + ++ (NSPredicate *)dct_predicateWhereProperty:(NSString *)name equals:(NSObject *)object { + return [NSPredicate predicateWithFormat:@"%K == %@", name, object]; +} + ++ (NSPredicate *)dct_predicateWherePropertyIsNotNil:(NSString *)name { + return [NSPredicate predicateWithFormat:@"%K != nil", name]; +} + ++ (NSPredicate *)dct_predicateWhereStringPropertyIsNotNilAndNotEmpty:(NSString *)name { + return [NSPredicate predicateWithFormat:@"%K != nil && %K != ''", name, name]; +} + +@end