diff --git a/Classes/NSManagedObject+Foundry.m b/Classes/NSManagedObject+Foundry.m index 963cb2a..356fca4 100644 --- a/Classes/NSManagedObject+Foundry.m +++ b/Classes/NSManagedObject+Foundry.m @@ -8,6 +8,12 @@ #import "NSManagedObject+Foundry.h" +@interface NSObject (FoundryPrivate) ++(NSDictionary *)foundryAttributesWithSpec:(NSDictionary*)spec; +@end + + + @implementation NSManagedObject (Foundry) + (instancetype)foundryBuild @@ -17,18 +23,44 @@ + (instancetype)foundryBuild userInfo:nil]; } -+ (instancetype)foundryBuildWithContext:(NSManagedObjectContext *)context ++ (instancetype)foundryBuildWithContext:(NSManagedObjectContext *)context { + [self foundryWillBuildObject]; + id instance = [self foundryBuildWithContext:context usingSpec:[self foundryBuildSpecs]]; + [self foundryDidBuildObject:instance]; + + return instance; +} + ++ (instancetype)foundryBuildWithContext:(NSManagedObjectContext *)context usingSpec:(NSDictionary*)spec { NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:[self entityName] inManagedObjectContext:context]; - NSDictionary *attributes = [self foundryAttributes]; + NSDictionary *attributes = [self foundryAttributesWithSpec:spec]; NSDictionary *propertiesByName = object.entity.propertiesByName; for (NSString *propertyName in [propertiesByName allKeys]) { - if (attributes[propertyName]) { - if ([propertiesByName[propertyName] isKindOfClass:[NSAttributeDescription class]]) { - [object setValue:attributes[propertyName] forKey:propertyName]; - } else if ([propertiesByName[propertyName] isKindOfClass:[NSRelationshipDescription class]]) { - + if ([propertiesByName[propertyName] isKindOfClass:[NSAttributeDescription class]] && + attributes[propertyName]) { + [object setValue:attributes[propertyName] forKey:propertyName]; + } else if ([propertiesByName[propertyName] isKindOfClass:[NSRelationshipDescription class]] && + spec[propertyName]) { + NSRelationshipDescription* relationship = propertiesByName[propertyName]; + id relatedObject; + FoundryPropertyType type = [spec[propertyName] integerValue]; + if (type == FoundryPropertyTypeAnyRelationship) { + NSEntityDescription* relatedEntity = [relationship destinationEntity]; + Class targetClass = NSClassFromString([relatedEntity managedObjectClassName]); + NSRelationshipDescription* inverse = [relationship inverseRelationship]; + NSMutableDictionary* targetSpec = [[targetClass foundryBuildSpecs] mutableCopy]; + if (inverse) { + [targetSpec removeObjectForKey:[inverse name]]; + } + relatedObject = [targetClass foundryBuildWithContext:context usingSpec:targetSpec]; + relatedObject = [relationship isToMany]? [NSSet setWithObject:relatedObject] : relatedObject; + } + else if (type == FoundryPropertyTypeSpecificRelationship) { + relatedObject = [self foundryRelatedObjectForProperty:propertyName + inContext:context]; } + [object setValue:relatedObject forKey:propertyName]; } } diff --git a/Classes/NSObject+Foundry.m b/Classes/NSObject+Foundry.m index 6a02dc8..189ebf2 100644 --- a/Classes/NSObject+Foundry.m +++ b/Classes/NSObject+Foundry.m @@ -52,10 +52,13 @@ + (NSDictionary *)foundryBuildSpecs userInfo:nil]; } -+ (NSDictionary *)foundryAttributes ++ (NSDictionary *)foundryAttributes { + return [self foundryAttributesWithSpec:[self foundryBuildSpecs]]; +} + ++ (NSDictionary *)foundryAttributesWithSpec:(NSDictionary*)spec { NSMutableDictionary *attributesDict = [NSMutableDictionary new]; - NSDictionary *spec = [self foundryBuildSpecs]; for (NSString *key in [spec allKeys]) { FoundryPropertyType type = [spec[key] integerValue]; diff --git a/Classes/TGFoundryObject.h b/Classes/TGFoundryObject.h index 7560dd6..8c8eb1d 100644 --- a/Classes/TGFoundryObject.h +++ b/Classes/TGFoundryObject.h @@ -163,8 +163,26 @@ typedef NS_ENUM(NSUInteger, FoundryPropertyType) { */ FoundryPropertyTypeCustom, + + /** + + * (Managed objects ONLY) Property represents a relationship where the destination entity's class also conforms to `TGFoundryObject` protocol. The related object will be built using `+foundryBuildWithContext:`. + * @note If the relationship is to-many, a factory object will be wrapped in `NSSet`. + + */ + FoundryPropertyTypeAnyRelationship, + + /** + + * (Managed objects ONLY) Property represents a relationship. The related object will be set using `+foundryRelatedObjectForKey:inContext:` method on the `TGFoundryObject` protocol. + + */ + FoundryPropertyTypeSpecificRelationship, }; + +@class NSManagedObjectContext; + /** * Protocol that an object must adopt in order to be manufactured using Foundry. */ @@ -198,6 +216,18 @@ typedef NS_ENUM(NSUInteger, FoundryPropertyType) { + (id)foundryAttributeForProperty:(NSString *)property; +/** + * If you assign a relationship property the `FoundryPropertyTypeSpecificRelationship` value in the build specs, this method will be called looking for the related object. + * + * @param property Name of the relationship key that Foundry is seeking a value for. + * + * @param context The managed object context that the receiver's new instance is being created in. + * + * @return The managed object to set for the relationship. + */ + ++ (id)foundryRelatedObjectForProperty:(NSString*)property inContext:(NSManagedObjectContext*)context; + /** * Callback when an object of the `TGFoundryObject` class is about to be built. */ diff --git a/Podfile b/Podfile index 0f2c23d..ad903b3 100644 --- a/Podfile +++ b/Podfile @@ -4,7 +4,7 @@ xcodeproj 'Tests/FoundryTests.xcodeproj' inhibit_all_warnings! target :iostests do - platform :ios, '7.0' + platform :ios, '8.0' pod 'MagicalRecord' pod 'Gizou', :git => 'https://github.com/smyrgl/Gizou.git' xcodeproj 'Tests/FoundryTests.xcodeproj' @@ -15,4 +15,4 @@ target :osxtests do pod 'MagicalRecord' pod 'Gizou', :git => 'https://github.com/smyrgl/Gizou.git' xcodeproj 'Tests/FoundryTests.xcodeproj' -end \ No newline at end of file +end diff --git a/Podfile.lock b/Podfile.lock index 81661f9..05d60a8 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,7 +1,7 @@ PODS: - Gizou (0.1.3) - MagicalRecord (2.2): - - MagicalRecord/Core + - MagicalRecord/Core (= 2.2) - MagicalRecord/Core (2.2) DEPENDENCIES: @@ -12,8 +12,15 @@ EXTERNAL SOURCES: Gizou: :git: https://github.com/smyrgl/Gizou.git +CHECKOUT OPTIONS: + Gizou: + :commit: 09d10c2c49bfe52a714d5b182799d27cc79bbcbe + :git: https://github.com/smyrgl/Gizou.git + SPEC CHECKSUMS: Gizou: 5d17a448abd3f2b7ce5002f28073cdc717dc76c3 - MagicalRecord: 95d49d74ef752cd52f6ad87bcb474817fc3978cf + MagicalRecord: 2dc87179ae7c1f2a274442624ec65a07d4357a6f + +PODFILE CHECKSUM: a8bf7158851c7d4952a122893aefe8fb2705eb03 -COCOAPODS: 0.32.1 +COCOAPODS: 1.2.0 diff --git a/README.md b/README.md index 7b8de6e..58b9acd 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,11 @@ What if you want to manually assign the value yourself during the build process ### Relationships -Right now you can set these using the custom property types but very soon Foundry will add the ability to nest factories so that you can assign a factory to a relationship attribute as part of your build spec. Stay tuned! +Relationships are supported for `NSManagedObject`s. You have two options: + + - `FoundryPropertyTypeAnyRelationship`: Assuming the related object is another `NSManagedObject` that conforms to `TGFoundryObject`, using this type will build an instance of that class using `foundryBuildWithContext:`. + + - `FoundryPropertyTypeSpecificRelationship`: If you want to provide a specific object (or set, for to-many) relationships, specify this type in the build specs, then implement `foundryRelatedObjectForProperty:inContext:` method. ## Requirements diff --git a/Tests/FoundryManagedObjectTests.m b/Tests/FoundryManagedObjectTests.m index 1891f05..5b3b9fc 100644 --- a/Tests/FoundryManagedObjectTests.m +++ b/Tests/FoundryManagedObjectTests.m @@ -7,6 +7,8 @@ // #import +#import "ManagedAnimal+ManagedAnimalTests.h" +#import "ManagedPerson+ManagedPersonTests.h" @interface FoundryManagedObjectTests : XCTestCase @@ -32,7 +34,6 @@ - (void)testBuildManagedObject ManagedPerson *newPerson = [ManagedPerson foundryBuildWithContext:[NSManagedObjectContext MR_defaultContext]]; XCTAssert(newPerson, @"There must be a new person built"); XCTAssert(newPerson.objectID.isTemporaryID, @"The object should have a temporary ID"); - } - (void)testCreateManagedObject @@ -72,4 +73,22 @@ - (void)testFailObjectBuildBatch XCTAssertThrows([ManagedPerson foundryBuildNumber:10], @"Trying to use the batch build method on a managed object should throw an exception"); } +- (void)testBuildManagedObjectsWithAnyRelationship +{ + NSArray *animals = [ManagedAnimal foundryCreateNumber:5 withContext:[NSManagedObjectContext MR_defaultContext]]; + for (ManagedAnimal* animal in animals) { + XCTAssertNotNil(animal.owner, @"Creating a new managed object should also create related objects."); + } +} + +-(void)testBuildManagedObjectsWithSpecificRelationship +{ + NSManagedObjectContext* context = [NSManagedObjectContext MR_defaultContext]; + NSArray *animals = [[ManagedAnimal foundryCreateNumber:5 withContext:context] sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]]; + ManagedPerson *person = [ManagedPerson foundryCreateWithContext:context]; + XCTAssert([person.pets count] == 1, @"To-many relationships created with `FoundryPropertyTypeAnyRelationship` should have a single object."); + ManagedAnimal* thePet = [person.pets anyObject]; + XCTAssert([thePet.name isEqualToString:[[animals firstObject] name]], @"`FoundryPropertyTypeSpecificRelationship` should set the right object."); +} + @end diff --git a/Tests/FoundryTests.xcodeproj/project.pbxproj b/Tests/FoundryTests.xcodeproj/project.pbxproj index 501b86e..91654e0 100644 --- a/Tests/FoundryTests.xcodeproj/project.pbxproj +++ b/Tests/FoundryTests.xcodeproj/project.pbxproj @@ -1,1525 +1,717 @@ - - - - - archiveVersion - 1 - classes - - objectVersion - 46 - objects - - 100EDF38C9B74D3B81159A65 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - path - libPods-osxtests.a - sourceTree - BUILT_PRODUCTS_DIR - - 46261D7DEA644986B28E478E - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Copy Pods Resources - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - "${SRCROOT}/../Pods/Pods-iostests-resources.sh" - - showEnvVarsInLog - 0 - - 4F82CDB6C065430B8AF84FFC - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - name - Pods-iostests.xcconfig - path - ../Pods/Pods-iostests.xcconfig - sourceTree - <group> - - 526772E91905D0E60093114E - - children - - 526772F21905D10F0093114E - 526772F11905D1070093114E - - isa - PBXGroup - name - Shared - sourceTree - <group> - - 526772EB1905D0FB0093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - Person.h - sourceTree - <group> - - 526772EC1905D0FB0093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - Person.m - sourceTree - <group> - - 526772EF1905D0FB0093114E - - fileRef - 526772EC1905D0FB0093114E - isa - PBXBuildFile - - 526772F01905D0FB0093114E - - fileRef - 526772EC1905D0FB0093114E - isa - PBXBuildFile - - 526772F11905D1070093114E - - children - - 526773141905DF830093114E - 526773151905DF830093114E - 526773101905DF650093114E - 526773111905DF650093114E - 526772EB1905D0FB0093114E - 526772EC1905D0FB0093114E - 526773081905DCE00093114E - 526773091905DCE00093114E - 5267730C1905DEA70093114E - - isa - PBXGroup - name - Models - sourceTree - <group> - - 526772F21905D10F0093114E - - children - - 526772FF1905D87F0093114E - 526773021905D88C0093114E - - isa - PBXGroup - name - Tests - sourceTree - <group> - - 526772F31905D1260093114E - - children - - 526772F41905D1480093114E - 526772F51905D1480093114E - 526772F61905D1480093114E - 526772F71905D1480093114E - 526772F81905D1480093114E - 526772F91905D1480093114E - - isa - PBXGroup - name - Vendor - sourceTree - <group> - - 526772F41905D1480093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - Foundry.h - path - ../Classes/Foundry.h - sourceTree - <group> - - 526772F51905D1480093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSManagedObject+Foundry.h - path - ../Classes/NSManagedObject+Foundry.h - sourceTree - <group> - - 526772F61905D1480093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSManagedObject+Foundry.m - path - ../Classes/NSManagedObject+Foundry.m - sourceTree - <group> - - 526772F71905D1480093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSObject+Foundry.h - path - ../Classes/NSObject+Foundry.h - sourceTree - <group> - - 526772F81905D1480093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSObject+Foundry.m - path - ../Classes/NSObject+Foundry.m - sourceTree - <group> - - 526772F91905D1480093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - TGFoundryObject.h - path - ../Classes/TGFoundryObject.h - sourceTree - <group> - - 526772FA1905D1480093114E - - fileRef - 526772F61905D1480093114E - isa - PBXBuildFile - - 526772FB1905D1480093114E - - fileRef - 526772F61905D1480093114E - isa - PBXBuildFile - - 526772FC1905D1480093114E - - fileRef - 526772F81905D1480093114E - isa - PBXBuildFile - - 526772FD1905D1480093114E - - fileRef - 526772F81905D1480093114E - isa - PBXBuildFile - - 526772FF1905D87F0093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - FoundryObjectTests.m - sourceTree - <group> - - 526773001905D87F0093114E - - fileRef - 526772FF1905D87F0093114E - isa - PBXBuildFile - - 526773011905D87F0093114E - - fileRef - 526772FF1905D87F0093114E - isa - PBXBuildFile - - 526773021905D88C0093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - FoundryManagedObjectTests.m - sourceTree - <group> - - 526773031905D88C0093114E - - fileRef - 526773021905D88C0093114E - isa - PBXBuildFile - - 526773041905D88C0093114E - - fileRef - 526773021905D88C0093114E - isa - PBXBuildFile - - 526773081905DCE00093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - Animal.h - sourceTree - <group> - - 526773091905DCE00093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - Animal.m - sourceTree - <group> - - 5267730A1905DCE00093114E - - fileRef - 526773091905DCE00093114E - isa - PBXBuildFile - - 5267730B1905DCE00093114E - - fileRef - 526773091905DCE00093114E - isa - PBXBuildFile - - 5267730C1905DEA70093114E - - children - - 5267730D1905DEA70093114E - - currentVersion - 5267730D1905DEA70093114E - isa - XCVersionGroup - path - foundryTestModel.xcdatamodeld - sourceTree - <group> - versionGroupType - wrapper.xcdatamodel - - 5267730D1905DEA70093114E - - isa - PBXFileReference - lastKnownFileType - wrapper.xcdatamodel - path - foundryTestModel.xcdatamodel - sourceTree - <group> - - 5267730E1905DEA70093114E - - fileRef - 5267730C1905DEA70093114E - isa - PBXBuildFile - - 5267730F1905DEA70093114E - - fileRef - 5267730C1905DEA70093114E - isa - PBXBuildFile - - 526773101905DF650093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - ManagedPerson.h - sourceTree - <group> - - 526773111905DF650093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - ManagedPerson.m - sourceTree - <group> - - 526773121905DF650093114E - - fileRef - 526773111905DF650093114E - isa - PBXBuildFile - - 526773131905DF650093114E - - fileRef - 526773111905DF650093114E - isa - PBXBuildFile - - 526773141905DF830093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - ManagedPerson+ManagedPersonTests.h - sourceTree - <group> - - 526773151905DF830093114E - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - ManagedPerson+ManagedPersonTests.m - sourceTree - <group> - - 526773161905DF830093114E - - fileRef - 526773151905DF830093114E - isa - PBXBuildFile - - 526773171905DF830093114E - - fileRef - 526773151905DF830093114E - isa - PBXBuildFile - - 52C53A4C1905CF9900254581 - - children - - 526772E91905D0E60093114E - 52C53A601905CFA800254581 - 52C53A721905CFB300254581 - 52C53A591905CFA800254581 - 52C53A581905CFA800254581 - 526772F31905D1260093114E - 4F82CDB6C065430B8AF84FFC - FA4F2EC3851C47E1A89430FF - - isa - PBXGroup - sourceTree - <group> - - 52C53A4D1905CF9900254581 - - attributes - - LastUpgradeCheck - 0510 - - buildConfigurationList - 52C53A501905CF9900254581 - compatibilityVersion - Xcode 3.2 - developmentRegion - English - hasScannedForEncodings - 0 - isa - PBXProject - knownRegions - - en - - mainGroup - 52C53A4C1905CF9900254581 - productRefGroup - 52C53A581905CFA800254581 - projectDirPath - - projectReferences - - projectRoot - - targets - - 52C53A561905CFA800254581 - 52C53A6F1905CFB300254581 - - - 52C53A501905CF9900254581 - - buildConfigurations - - 52C53A511905CF9900254581 - 52C53A521905CF9900254581 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 52C53A511905CF9900254581 - - buildSettings - - isa - XCBuildConfiguration - name - Debug - - 52C53A521905CF9900254581 - - buildSettings - - isa - XCBuildConfiguration - name - Release - - 52C53A531905CFA800254581 - - buildActionMask - 2147483647 - files - - 526772FA1905D1480093114E - 526772EF1905D0FB0093114E - 526773121905DF650093114E - 526773001905D87F0093114E - 5267730A1905DCE00093114E - 5267730E1905DEA70093114E - 526773031905D88C0093114E - 526772FC1905D1480093114E - 526773161905DF830093114E - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 52C53A541905CFA800254581 - - buildActionMask - 2147483647 - files - - 52C53A5B1905CFA800254581 - 52C53A5F1905CFA800254581 - 52C53A5D1905CFA800254581 - 9717EE7E8C7C4A84949004A1 - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 52C53A551905CFA800254581 - - buildActionMask - 2147483647 - files - - 52C53A651905CFA800254581 - - isa - PBXResourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 52C53A561905CFA800254581 - - buildConfigurationList - 52C53A691905CFA800254581 - buildPhases - - 858D31FC63824260AFE7E165 - 52C53A531905CFA800254581 - 52C53A541905CFA800254581 - 52C53A551905CFA800254581 - 46261D7DEA644986B28E478E - - buildRules - - dependencies - - isa - PBXNativeTarget - name - iostests - productName - iostests - productReference - 52C53A571905CFA800254581 - productType - com.apple.product-type.bundle.unit-test - - 52C53A571905CFA800254581 - - explicitFileType - wrapper.cfbundle - includeInIndex - 0 - isa - PBXFileReference - path - iostests.xctest - sourceTree - BUILT_PRODUCTS_DIR - - 52C53A581905CFA800254581 - - children - - 52C53A571905CFA800254581 - 52C53A701905CFB300254581 - - isa - PBXGroup - name - Products - sourceTree - <group> - - 52C53A591905CFA800254581 - - children - - 52C53A5A1905CFA800254581 - 52C53A5C1905CFA800254581 - 52C53A5E1905CFA800254581 - BBC9CF4276C84C2A94A4035C - 100EDF38C9B74D3B81159A65 - - isa - PBXGroup - name - Frameworks - sourceTree - <group> - - 52C53A5A1905CFA800254581 - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - XCTest.framework - path - Library/Frameworks/XCTest.framework - sourceTree - DEVELOPER_DIR - - 52C53A5B1905CFA800254581 - - fileRef - 52C53A5A1905CFA800254581 - isa - PBXBuildFile - - 52C53A5C1905CFA800254581 - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - Foundation.framework - path - Library/Frameworks/Foundation.framework - sourceTree - DEVELOPER_DIR - - 52C53A5D1905CFA800254581 - - fileRef - 52C53A5C1905CFA800254581 - isa - PBXBuildFile - - 52C53A5E1905CFA800254581 - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - UIKit.framework - path - Library/Frameworks/UIKit.framework - sourceTree - DEVELOPER_DIR - - 52C53A5F1905CFA800254581 - - fileRef - 52C53A5E1905CFA800254581 - isa - PBXBuildFile - - 52C53A601905CFA800254581 - - children - - 52C53A611905CFA800254581 - - isa - PBXGroup - path - iostests - sourceTree - <group> - - 52C53A611905CFA800254581 - - children - - 52C53A621905CFA800254581 - 52C53A631905CFA800254581 - 52C53A681905CFA800254581 - - isa - PBXGroup - name - Supporting Files - sourceTree - <group> - - 52C53A621905CFA800254581 - - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - iostests-Info.plist - sourceTree - <group> - - 52C53A631905CFA800254581 - - children - - 52C53A641905CFA800254581 - - isa - PBXVariantGroup - name - InfoPlist.strings - sourceTree - <group> - - 52C53A641905CFA800254581 - - isa - PBXFileReference - lastKnownFileType - text.plist.strings - name - en - path - en.lproj/InfoPlist.strings - sourceTree - <group> - - 52C53A651905CFA800254581 - - fileRef - 52C53A631905CFA800254581 - isa - PBXBuildFile - - 52C53A681905CFA800254581 - - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - iostests-Prefix.pch - sourceTree - <group> - - 52C53A691905CFA800254581 - - buildConfigurations - - 52C53A6A1905CFA800254581 - 52C53A6B1905CFA800254581 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 52C53A6A1905CFA800254581 - - baseConfigurationReference - 4F82CDB6C065430B8AF84FFC - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - COPY_PHASE_STRIP - NO - FRAMEWORK_SEARCH_PATHS - - $(SDKROOT)/Developer/Library/Frameworks - $(inherited) - $(DEVELOPER_FRAMEWORKS_DIR) - - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PRECOMPILE_PREFIX_HEADER - YES - GCC_PREFIX_HEADER - iostests/iostests-Prefix.pch - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_SYMBOLS_PRIVATE_EXTERN - NO - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - INFOPLIST_FILE - iostests/iostests-Info.plist - IPHONEOS_DEPLOYMENT_TARGET - 7.1 - ONLY_ACTIVE_ARCH - YES - PRODUCT_NAME - $(TARGET_NAME) - SDKROOT - iphoneos - WRAPPER_EXTENSION - xctest - - isa - XCBuildConfiguration - name - Debug - - 52C53A6B1905CFA800254581 - - baseConfigurationReference - 4F82CDB6C065430B8AF84FFC - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - COPY_PHASE_STRIP - YES - ENABLE_NS_ASSERTIONS - NO - FRAMEWORK_SEARCH_PATHS - - $(SDKROOT)/Developer/Library/Frameworks - $(inherited) - $(DEVELOPER_FRAMEWORKS_DIR) - - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_PRECOMPILE_PREFIX_HEADER - YES - GCC_PREFIX_HEADER - iostests/iostests-Prefix.pch - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - INFOPLIST_FILE - iostests/iostests-Info.plist - IPHONEOS_DEPLOYMENT_TARGET - 7.1 - PRODUCT_NAME - $(TARGET_NAME) - SDKROOT - iphoneos - VALIDATE_PRODUCT - YES - WRAPPER_EXTENSION - xctest - - isa - XCBuildConfiguration - name - Release - - 52C53A6C1905CFB300254581 - - buildActionMask - 2147483647 - files - - 526772FB1905D1480093114E - 526772F01905D0FB0093114E - 526773131905DF650093114E - 526773011905D87F0093114E - 5267730B1905DCE00093114E - 5267730F1905DEA70093114E - 526773041905D88C0093114E - 526772FD1905D1480093114E - 526773171905DF830093114E - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 52C53A6D1905CFB300254581 - - buildActionMask - 2147483647 - files - - 52C53A711905CFB300254581 - 576545CAA62148F5BD283E3B - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 52C53A6E1905CFB300254581 - - buildActionMask - 2147483647 - files - - 52C53A771905CFB300254581 - - isa - PBXResourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 52C53A6F1905CFB300254581 - - buildConfigurationList - 52C53A7B1905CFB300254581 - buildPhases - - 59DA8DE25B674F2494DCA20F - 52C53A6C1905CFB300254581 - 52C53A6D1905CFB300254581 - 52C53A6E1905CFB300254581 - D0F645F2A3624660B49A260A - - buildRules - - dependencies - - isa - PBXNativeTarget - name - osxtests - productName - osxtests - productReference - 52C53A701905CFB300254581 - productType - com.apple.product-type.bundle.unit-test - - 52C53A701905CFB300254581 - - explicitFileType - wrapper.cfbundle - includeInIndex - 0 - isa - PBXFileReference - path - osxtests.xctest - sourceTree - BUILT_PRODUCTS_DIR - - 52C53A711905CFB300254581 - - fileRef - 52C53A5A1905CFA800254581 - isa - PBXBuildFile - - 52C53A721905CFB300254581 - - children - - 52C53A731905CFB300254581 - - isa - PBXGroup - path - osxtests - sourceTree - <group> - - 52C53A731905CFB300254581 - - children - - 52C53A741905CFB300254581 - 52C53A751905CFB300254581 - 52C53A7A1905CFB300254581 - - isa - PBXGroup - name - Supporting Files - sourceTree - <group> - - 52C53A741905CFB300254581 - - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - osxtests-Info.plist - sourceTree - <group> - - 52C53A751905CFB300254581 - - children - - 52C53A761905CFB300254581 - - isa - PBXVariantGroup - name - InfoPlist.strings - sourceTree - <group> - - 52C53A761905CFB300254581 - - isa - PBXFileReference - lastKnownFileType - text.plist.strings - name - en - path - en.lproj/InfoPlist.strings - sourceTree - <group> - - 52C53A771905CFB300254581 - - fileRef - 52C53A751905CFB300254581 - isa - PBXBuildFile - - 52C53A7A1905CFB300254581 - - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - osxtests-Prefix.pch - sourceTree - <group> - - 52C53A7B1905CFB300254581 - - buildConfigurations - - 52C53A7C1905CFB300254581 - 52C53A7D1905CFB300254581 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 52C53A7C1905CFB300254581 - - baseConfigurationReference - FA4F2EC3851C47E1A89430FF - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - COPY_PHASE_STRIP - NO - FRAMEWORK_SEARCH_PATHS - - $(DEVELOPER_FRAMEWORKS_DIR) - $(inherited) - - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_ENABLE_OBJC_EXCEPTIONS - YES - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PRECOMPILE_PREFIX_HEADER - YES - GCC_PREFIX_HEADER - osxtests/osxtests-Prefix.pch - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_SYMBOLS_PRIVATE_EXTERN - NO - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - INFOPLIST_FILE - osxtests/osxtests-Info.plist - MACOSX_DEPLOYMENT_TARGET - 10.9 - ONLY_ACTIVE_ARCH - YES - PRODUCT_NAME - $(TARGET_NAME) - SDKROOT - macosx - WRAPPER_EXTENSION - xctest - - isa - XCBuildConfiguration - name - Debug - - 52C53A7D1905CFB300254581 - - baseConfigurationReference - FA4F2EC3851C47E1A89430FF - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - COPY_PHASE_STRIP - YES - DEBUG_INFORMATION_FORMAT - dwarf-with-dsym - ENABLE_NS_ASSERTIONS - NO - FRAMEWORK_SEARCH_PATHS - - $(DEVELOPER_FRAMEWORKS_DIR) - $(inherited) - - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_ENABLE_OBJC_EXCEPTIONS - YES - GCC_PRECOMPILE_PREFIX_HEADER - YES - GCC_PREFIX_HEADER - osxtests/osxtests-Prefix.pch - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - INFOPLIST_FILE - osxtests/osxtests-Info.plist - MACOSX_DEPLOYMENT_TARGET - 10.9 - PRODUCT_NAME - $(TARGET_NAME) - SDKROOT - macosx - WRAPPER_EXTENSION - xctest - - isa - XCBuildConfiguration - name - Release - - 576545CAA62148F5BD283E3B - - fileRef - 100EDF38C9B74D3B81159A65 - isa - PBXBuildFile - - 59DA8DE25B674F2494DCA20F - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Check Pods Manifest.lock - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null -if [[ $? != 0 ]] ; then - cat << EOM -error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. -EOM - exit 1 -fi - - showEnvVarsInLog - 0 - - 858D31FC63824260AFE7E165 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Check Pods Manifest.lock - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null -if [[ $? != 0 ]] ; then - cat << EOM -error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. -EOM - exit 1 -fi - - showEnvVarsInLog - 0 - - 9717EE7E8C7C4A84949004A1 - - fileRef - BBC9CF4276C84C2A94A4035C - isa - PBXBuildFile - - BBC9CF4276C84C2A94A4035C - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - path - libPods-iostests.a - sourceTree - BUILT_PRODUCTS_DIR - - D0F645F2A3624660B49A260A - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Copy Pods Resources - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - "${SRCROOT}/../Pods/Pods-osxtests-resources.sh" - - showEnvVarsInLog - 0 - - FA4F2EC3851C47E1A89430FF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - name - Pods-osxtests.xcconfig - path - ../Pods/Pods-osxtests.xcconfig - sourceTree - <group> - - - rootObject - 52C53A4D1905CF9900254581 - - +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 526772EF1905D0FB0093114E /* Person.m in Sources */ = {isa = PBXBuildFile; fileRef = 526772EC1905D0FB0093114E /* Person.m */; }; + 526772F01905D0FB0093114E /* Person.m in Sources */ = {isa = PBXBuildFile; fileRef = 526772EC1905D0FB0093114E /* Person.m */; }; + 526772FA1905D1480093114E /* NSManagedObject+Foundry.m in Sources */ = {isa = PBXBuildFile; fileRef = 526772F61905D1480093114E /* NSManagedObject+Foundry.m */; }; + 526772FB1905D1480093114E /* NSManagedObject+Foundry.m in Sources */ = {isa = PBXBuildFile; fileRef = 526772F61905D1480093114E /* NSManagedObject+Foundry.m */; }; + 526772FC1905D1480093114E /* NSObject+Foundry.m in Sources */ = {isa = PBXBuildFile; fileRef = 526772F81905D1480093114E /* NSObject+Foundry.m */; }; + 526772FD1905D1480093114E /* NSObject+Foundry.m in Sources */ = {isa = PBXBuildFile; fileRef = 526772F81905D1480093114E /* NSObject+Foundry.m */; }; + 526773001905D87F0093114E /* FoundryObjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 526772FF1905D87F0093114E /* FoundryObjectTests.m */; }; + 526773011905D87F0093114E /* FoundryObjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 526772FF1905D87F0093114E /* FoundryObjectTests.m */; }; + 526773031905D88C0093114E /* FoundryManagedObjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 526773021905D88C0093114E /* FoundryManagedObjectTests.m */; }; + 526773041905D88C0093114E /* FoundryManagedObjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 526773021905D88C0093114E /* FoundryManagedObjectTests.m */; }; + 5267730A1905DCE00093114E /* Animal.m in Sources */ = {isa = PBXBuildFile; fileRef = 526773091905DCE00093114E /* Animal.m */; }; + 5267730B1905DCE00093114E /* Animal.m in Sources */ = {isa = PBXBuildFile; fileRef = 526773091905DCE00093114E /* Animal.m */; }; + 5267730E1905DEA70093114E /* foundryTestModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5267730C1905DEA70093114E /* foundryTestModel.xcdatamodeld */; }; + 5267730F1905DEA70093114E /* foundryTestModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5267730C1905DEA70093114E /* foundryTestModel.xcdatamodeld */; }; + 526773161905DF830093114E /* ManagedPerson+ManagedPersonTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 526773151905DF830093114E /* ManagedPerson+ManagedPersonTests.m */; }; + 526773171905DF830093114E /* ManagedPerson+ManagedPersonTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 526773151905DF830093114E /* ManagedPerson+ManagedPersonTests.m */; }; + 52C53A5B1905CFA800254581 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C53A5A1905CFA800254581 /* XCTest.framework */; }; + 52C53A5D1905CFA800254581 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C53A5C1905CFA800254581 /* Foundation.framework */; }; + 52C53A5F1905CFA800254581 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C53A5E1905CFA800254581 /* UIKit.framework */; }; + 52C53A651905CFA800254581 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 52C53A631905CFA800254581 /* InfoPlist.strings */; }; + 52C53A711905CFB300254581 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C53A5A1905CFA800254581 /* XCTest.framework */; }; + 52C53A771905CFB300254581 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 52C53A751905CFB300254581 /* InfoPlist.strings */; }; + 576545CAA62148F5BD283E3B /* libPods-osxtests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 100EDF38C9B74D3B81159A65 /* libPods-osxtests.a */; }; + 61A29E921AA58FF600A36E4C /* ManagedPerson.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A29E911AA58FF600A36E4C /* ManagedPerson.m */; }; + 61A29E951AA58FF600A36E4C /* ManagedAnimal.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A29E941AA58FF600A36E4C /* ManagedAnimal.m */; }; + 61A29E981AA592F500A36E4C /* ManagedAnimal+ManagedAnimalTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A29E971AA592F500A36E4C /* ManagedAnimal+ManagedAnimalTests.m */; }; + 61A29E991AA6499000A36E4C /* ManagedPerson.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A29E911AA58FF600A36E4C /* ManagedPerson.m */; }; + 61A29E9A1AA6499500A36E4C /* ManagedAnimal.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A29E941AA58FF600A36E4C /* ManagedAnimal.m */; }; + 61A29E9B1AA64C2100A36E4C /* ManagedAnimal+ManagedAnimalTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A29E971AA592F500A36E4C /* ManagedAnimal+ManagedAnimalTests.m */; }; + 9717EE7E8C7C4A84949004A1 /* libPods-iostests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BBC9CF4276C84C2A94A4035C /* libPods-iostests.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 100EDF38C9B74D3B81159A65 /* libPods-osxtests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-osxtests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4152B88A2372428C71B9C37A /* Pods-iostests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iostests.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-iostests/Pods-iostests.debug.xcconfig"; sourceTree = ""; }; + 526772EB1905D0FB0093114E /* Person.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Person.h; sourceTree = ""; }; + 526772EC1905D0FB0093114E /* Person.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Person.m; sourceTree = ""; }; + 526772F41905D1480093114E /* Foundry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Foundry.h; path = ../Classes/Foundry.h; sourceTree = ""; }; + 526772F51905D1480093114E /* NSManagedObject+Foundry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSManagedObject+Foundry.h"; path = "../Classes/NSManagedObject+Foundry.h"; sourceTree = ""; }; + 526772F61905D1480093114E /* NSManagedObject+Foundry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSManagedObject+Foundry.m"; path = "../Classes/NSManagedObject+Foundry.m"; sourceTree = ""; }; + 526772F71905D1480093114E /* NSObject+Foundry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSObject+Foundry.h"; path = "../Classes/NSObject+Foundry.h"; sourceTree = ""; }; + 526772F81905D1480093114E /* NSObject+Foundry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Foundry.m"; path = "../Classes/NSObject+Foundry.m"; sourceTree = ""; }; + 526772F91905D1480093114E /* TGFoundryObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGFoundryObject.h; path = ../Classes/TGFoundryObject.h; sourceTree = ""; }; + 526772FF1905D87F0093114E /* FoundryObjectTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FoundryObjectTests.m; sourceTree = ""; }; + 526773021905D88C0093114E /* FoundryManagedObjectTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FoundryManagedObjectTests.m; sourceTree = ""; }; + 526773081905DCE00093114E /* Animal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Animal.h; sourceTree = ""; }; + 526773091905DCE00093114E /* Animal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Animal.m; sourceTree = ""; }; + 5267730D1905DEA70093114E /* foundryTestModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = foundryTestModel.xcdatamodel; sourceTree = ""; }; + 526773141905DF830093114E /* ManagedPerson+ManagedPersonTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ManagedPerson+ManagedPersonTests.h"; sourceTree = ""; }; + 526773151905DF830093114E /* ManagedPerson+ManagedPersonTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ManagedPerson+ManagedPersonTests.m"; sourceTree = ""; }; + 52C53A571905CFA800254581 /* iostests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iostests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 52C53A5A1905CFA800254581 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 52C53A5C1905CFA800254581 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 52C53A5E1905CFA800254581 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 52C53A621905CFA800254581 /* iostests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iostests-Info.plist"; sourceTree = ""; }; + 52C53A641905CFA800254581 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 52C53A681905CFA800254581 /* iostests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iostests-Prefix.pch"; sourceTree = ""; }; + 52C53A701905CFB300254581 /* osxtests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = osxtests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 52C53A741905CFB300254581 /* osxtests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "osxtests-Info.plist"; sourceTree = ""; }; + 52C53A761905CFB300254581 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 52C53A7A1905CFB300254581 /* osxtests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "osxtests-Prefix.pch"; sourceTree = ""; }; + 61A29E901AA58FF600A36E4C /* ManagedPerson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManagedPerson.h; sourceTree = ""; }; + 61A29E911AA58FF600A36E4C /* ManagedPerson.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ManagedPerson.m; sourceTree = ""; }; + 61A29E931AA58FF600A36E4C /* ManagedAnimal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManagedAnimal.h; sourceTree = ""; }; + 61A29E941AA58FF600A36E4C /* ManagedAnimal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ManagedAnimal.m; sourceTree = ""; }; + 61A29E961AA592F500A36E4C /* ManagedAnimal+ManagedAnimalTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ManagedAnimal+ManagedAnimalTests.h"; sourceTree = ""; }; + 61A29E971AA592F500A36E4C /* ManagedAnimal+ManagedAnimalTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ManagedAnimal+ManagedAnimalTests.m"; sourceTree = ""; }; + 9286AEF2F32377E839C2387F /* Pods-osxtests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-osxtests.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-osxtests/Pods-osxtests.debug.xcconfig"; sourceTree = ""; }; + BBC9CF4276C84C2A94A4035C /* libPods-iostests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iostests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + C2734150834C690A4D66A003 /* Pods-iostests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iostests.release.xcconfig"; path = "../Pods/Target Support Files/Pods-iostests/Pods-iostests.release.xcconfig"; sourceTree = ""; }; + F5F3A82FE55CC2146A1F2631 /* Pods-osxtests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-osxtests.release.xcconfig"; path = "../Pods/Target Support Files/Pods-osxtests/Pods-osxtests.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 52C53A541905CFA800254581 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 52C53A5B1905CFA800254581 /* XCTest.framework in Frameworks */, + 52C53A5F1905CFA800254581 /* UIKit.framework in Frameworks */, + 52C53A5D1905CFA800254581 /* Foundation.framework in Frameworks */, + 9717EE7E8C7C4A84949004A1 /* libPods-iostests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52C53A6D1905CFB300254581 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 52C53A711905CFB300254581 /* XCTest.framework in Frameworks */, + 576545CAA62148F5BD283E3B /* libPods-osxtests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 526772E91905D0E60093114E /* Shared */ = { + isa = PBXGroup; + children = ( + 526772F21905D10F0093114E /* Tests */, + 526772F11905D1070093114E /* Models */, + ); + name = Shared; + sourceTree = ""; + }; + 526772F11905D1070093114E /* Models */ = { + isa = PBXGroup; + children = ( + 526773141905DF830093114E /* ManagedPerson+ManagedPersonTests.h */, + 526773151905DF830093114E /* ManagedPerson+ManagedPersonTests.m */, + 526772EB1905D0FB0093114E /* Person.h */, + 526772EC1905D0FB0093114E /* Person.m */, + 526773081905DCE00093114E /* Animal.h */, + 526773091905DCE00093114E /* Animal.m */, + 5267730C1905DEA70093114E /* foundryTestModel.xcdatamodeld */, + 61A29E931AA58FF600A36E4C /* ManagedAnimal.h */, + 61A29E941AA58FF600A36E4C /* ManagedAnimal.m */, + 61A29E901AA58FF600A36E4C /* ManagedPerson.h */, + 61A29E911AA58FF600A36E4C /* ManagedPerson.m */, + 61A29E961AA592F500A36E4C /* ManagedAnimal+ManagedAnimalTests.h */, + 61A29E971AA592F500A36E4C /* ManagedAnimal+ManagedAnimalTests.m */, + ); + name = Models; + sourceTree = ""; + }; + 526772F21905D10F0093114E /* Tests */ = { + isa = PBXGroup; + children = ( + 526772FF1905D87F0093114E /* FoundryObjectTests.m */, + 526773021905D88C0093114E /* FoundryManagedObjectTests.m */, + ); + name = Tests; + sourceTree = ""; + }; + 526772F31905D1260093114E /* Vendor */ = { + isa = PBXGroup; + children = ( + 526772F41905D1480093114E /* Foundry.h */, + 526772F51905D1480093114E /* NSManagedObject+Foundry.h */, + 526772F61905D1480093114E /* NSManagedObject+Foundry.m */, + 526772F71905D1480093114E /* NSObject+Foundry.h */, + 526772F81905D1480093114E /* NSObject+Foundry.m */, + 526772F91905D1480093114E /* TGFoundryObject.h */, + ); + name = Vendor; + sourceTree = ""; + }; + 52C53A4C1905CF9900254581 = { + isa = PBXGroup; + children = ( + 526772E91905D0E60093114E /* Shared */, + 52C53A601905CFA800254581 /* iostests */, + 52C53A721905CFB300254581 /* osxtests */, + 52C53A591905CFA800254581 /* Frameworks */, + 52C53A581905CFA800254581 /* Products */, + 526772F31905D1260093114E /* Vendor */, + DCBAC8485B383F7A26A53A23 /* Pods */, + ); + sourceTree = ""; + }; + 52C53A581905CFA800254581 /* Products */ = { + isa = PBXGroup; + children = ( + 52C53A571905CFA800254581 /* iostests.xctest */, + 52C53A701905CFB300254581 /* osxtests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 52C53A591905CFA800254581 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 52C53A5A1905CFA800254581 /* XCTest.framework */, + 52C53A5C1905CFA800254581 /* Foundation.framework */, + 52C53A5E1905CFA800254581 /* UIKit.framework */, + BBC9CF4276C84C2A94A4035C /* libPods-iostests.a */, + 100EDF38C9B74D3B81159A65 /* libPods-osxtests.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 52C53A601905CFA800254581 /* iostests */ = { + isa = PBXGroup; + children = ( + 52C53A611905CFA800254581 /* Supporting Files */, + ); + path = iostests; + sourceTree = ""; + }; + 52C53A611905CFA800254581 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 52C53A621905CFA800254581 /* iostests-Info.plist */, + 52C53A631905CFA800254581 /* InfoPlist.strings */, + 52C53A681905CFA800254581 /* iostests-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 52C53A721905CFB300254581 /* osxtests */ = { + isa = PBXGroup; + children = ( + 52C53A731905CFB300254581 /* Supporting Files */, + ); + path = osxtests; + sourceTree = ""; + }; + 52C53A731905CFB300254581 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 52C53A741905CFB300254581 /* osxtests-Info.plist */, + 52C53A751905CFB300254581 /* InfoPlist.strings */, + 52C53A7A1905CFB300254581 /* osxtests-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + DCBAC8485B383F7A26A53A23 /* Pods */ = { + isa = PBXGroup; + children = ( + 4152B88A2372428C71B9C37A /* Pods-iostests.debug.xcconfig */, + C2734150834C690A4D66A003 /* Pods-iostests.release.xcconfig */, + 9286AEF2F32377E839C2387F /* Pods-osxtests.debug.xcconfig */, + F5F3A82FE55CC2146A1F2631 /* Pods-osxtests.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 52C53A561905CFA800254581 /* iostests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 52C53A691905CFA800254581 /* Build configuration list for PBXNativeTarget "iostests" */; + buildPhases = ( + 858D31FC63824260AFE7E165 /* [CP] Check Pods Manifest.lock */, + 52C53A531905CFA800254581 /* Sources */, + 52C53A541905CFA800254581 /* Frameworks */, + 52C53A551905CFA800254581 /* Resources */, + 46261D7DEA644986B28E478E /* [CP] Copy Pods Resources */, + 5E52E467F42909CD33917BFB /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iostests; + productName = iostests; + productReference = 52C53A571905CFA800254581 /* iostests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 52C53A6F1905CFB300254581 /* osxtests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 52C53A7B1905CFB300254581 /* Build configuration list for PBXNativeTarget "osxtests" */; + buildPhases = ( + 59DA8DE25B674F2494DCA20F /* [CP] Check Pods Manifest.lock */, + 52C53A6C1905CFB300254581 /* Sources */, + 52C53A6D1905CFB300254581 /* Frameworks */, + 52C53A6E1905CFB300254581 /* Resources */, + D0F645F2A3624660B49A260A /* [CP] Copy Pods Resources */, + ABD19CC0BFE47EE07FDEA00C /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = osxtests; + productName = osxtests; + productReference = 52C53A701905CFB300254581 /* osxtests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 52C53A4D1905CF9900254581 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0510; + }; + buildConfigurationList = 52C53A501905CF9900254581 /* Build configuration list for PBXProject "FoundryTests" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 52C53A4C1905CF9900254581; + productRefGroup = 52C53A581905CFA800254581 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 52C53A561905CFA800254581 /* iostests */, + 52C53A6F1905CFB300254581 /* osxtests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 52C53A551905CFA800254581 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 52C53A651905CFA800254581 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52C53A6E1905CFB300254581 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 52C53A771905CFB300254581 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 46261D7DEA644986B28E478E /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-iostests/Pods-iostests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 59DA8DE25B674F2494DCA20F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 5E52E467F42909CD33917BFB /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-iostests/Pods-iostests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 858D31FC63824260AFE7E165 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + ABD19CC0BFE47EE07FDEA00C /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-osxtests/Pods-osxtests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + D0F645F2A3624660B49A260A /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-osxtests/Pods-osxtests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 52C53A531905CFA800254581 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 526772FA1905D1480093114E /* NSManagedObject+Foundry.m in Sources */, + 61A29E951AA58FF600A36E4C /* ManagedAnimal.m in Sources */, + 526772EF1905D0FB0093114E /* Person.m in Sources */, + 61A29E921AA58FF600A36E4C /* ManagedPerson.m in Sources */, + 526773001905D87F0093114E /* FoundryObjectTests.m in Sources */, + 61A29E981AA592F500A36E4C /* ManagedAnimal+ManagedAnimalTests.m in Sources */, + 5267730A1905DCE00093114E /* Animal.m in Sources */, + 5267730E1905DEA70093114E /* foundryTestModel.xcdatamodeld in Sources */, + 526773031905D88C0093114E /* FoundryManagedObjectTests.m in Sources */, + 526772FC1905D1480093114E /* NSObject+Foundry.m in Sources */, + 526773161905DF830093114E /* ManagedPerson+ManagedPersonTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 52C53A6C1905CFB300254581 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 526772FB1905D1480093114E /* NSManagedObject+Foundry.m in Sources */, + 61A29E9A1AA6499500A36E4C /* ManagedAnimal.m in Sources */, + 526772F01905D0FB0093114E /* Person.m in Sources */, + 61A29E991AA6499000A36E4C /* ManagedPerson.m in Sources */, + 526773011905D87F0093114E /* FoundryObjectTests.m in Sources */, + 61A29E9B1AA64C2100A36E4C /* ManagedAnimal+ManagedAnimalTests.m in Sources */, + 5267730B1905DCE00093114E /* Animal.m in Sources */, + 5267730F1905DEA70093114E /* foundryTestModel.xcdatamodeld in Sources */, + 526773041905D88C0093114E /* FoundryManagedObjectTests.m in Sources */, + 526772FD1905D1480093114E /* NSObject+Foundry.m in Sources */, + 526773171905DF830093114E /* ManagedPerson+ManagedPersonTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 52C53A631905CFA800254581 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 52C53A641905CFA800254581 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 52C53A751905CFB300254581 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 52C53A761905CFB300254581 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 52C53A511905CF9900254581 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Debug; + }; + 52C53A521905CF9900254581 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Release; + }; + 52C53A6A1905CFA800254581 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4152B88A2372428C71B9C37A /* Pods-iostests.debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iostests/iostests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "iostests/iostests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + WRAPPER_EXTENSION = xctest; + }; + name = Debug; + }; + 52C53A6B1905CFA800254581 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C2734150834C690A4D66A003 /* Pods-iostests.release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iostests/iostests-Prefix.pch"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "iostests/iostests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = xctest; + }; + name = Release; + }; + 52C53A7C1905CFB300254581 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9286AEF2F32377E839C2387F /* Pods-osxtests.debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(inherited)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "osxtests/osxtests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "osxtests/osxtests-Info.plist"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + WRAPPER_EXTENSION = xctest; + }; + name = Debug; + }; + 52C53A7D1905CFB300254581 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F5F3A82FE55CC2146A1F2631 /* Pods-osxtests.release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(inherited)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "osxtests/osxtests-Prefix.pch"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "osxtests/osxtests-Info.plist"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + WRAPPER_EXTENSION = xctest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 52C53A501905CF9900254581 /* Build configuration list for PBXProject "FoundryTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 52C53A511905CF9900254581 /* Debug */, + 52C53A521905CF9900254581 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 52C53A691905CFA800254581 /* Build configuration list for PBXNativeTarget "iostests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 52C53A6A1905CFA800254581 /* Debug */, + 52C53A6B1905CFA800254581 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 52C53A7B1905CFB300254581 /* Build configuration list for PBXNativeTarget "osxtests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 52C53A7C1905CFB300254581 /* Debug */, + 52C53A7D1905CFB300254581 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 5267730C1905DEA70093114E /* foundryTestModel.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 5267730D1905DEA70093114E /* foundryTestModel.xcdatamodel */, + ); + currentVersion = 5267730D1905DEA70093114E /* foundryTestModel.xcdatamodel */; + path = foundryTestModel.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = 52C53A4D1905CF9900254581 /* Project object */; +} diff --git a/Tests/FoundryTests.xcodeproj/xcshareddata/xcschemes/iostests.xcscheme b/Tests/FoundryTests.xcodeproj/xcshareddata/xcschemes/iostests.xcscheme index fd65146..9506300 100644 --- a/Tests/FoundryTests.xcodeproj/xcshareddata/xcschemes/iostests.xcscheme +++ b/Tests/FoundryTests.xcodeproj/xcshareddata/xcschemes/iostests.xcscheme @@ -23,10 +23,10 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -39,24 +39,36 @@ + + + + + + + +@end diff --git a/Tests/ManagedAnimal+ManagedAnimalTests.m b/Tests/ManagedAnimal+ManagedAnimalTests.m new file mode 100644 index 0000000..948b93e --- /dev/null +++ b/Tests/ManagedAnimal+ManagedAnimalTests.m @@ -0,0 +1,33 @@ +// +// ManagedAnimal+ManagedAnimalTests.m +// FoundryTests +// +// Created by Hirad Motamed on 2015-03-02. +// +// + +#import "ManagedAnimal+ManagedAnimalTests.h" + +@implementation ManagedAnimal (ManagedAnimalTests) + ++(NSDictionary *)foundryBuildSpecs { + return @{ + @"name": @(FoundryPropertyTypeFirstName), + @"species": @(FoundryPropertyTypeCustom), + @"isExtinct": @(FoundryPropertyTypeCustom), + @"owner": @(FoundryPropertyTypeAnyRelationship) + }; +} + ++(id)foundryAttributeForProperty:(NSString *)property { + if ([property isEqualToString:@"isExtinct"]) { + return @NO; + } + else if ([property isEqualToString:@"species"]) { + return @"dog"; + } + + return nil; +} + +@end diff --git a/Tests/ManagedAnimal.h b/Tests/ManagedAnimal.h new file mode 100644 index 0000000..7562e6f --- /dev/null +++ b/Tests/ManagedAnimal.h @@ -0,0 +1,21 @@ +// +// ManagedAnimal.h +// FoundryTests +// +// Created by Hirad Motamed on 2015-03-02. +// +// + +#import +#import + +@class ManagedPerson; + +@interface ManagedAnimal : NSManagedObject + +@property (nonatomic, retain) NSString * name; +@property (nonatomic, retain) NSString * species; +@property (nonatomic, retain) NSNumber * isExtinct; +@property (nonatomic, retain) ManagedPerson *owner; + +@end diff --git a/Tests/ManagedAnimal.m b/Tests/ManagedAnimal.m new file mode 100644 index 0000000..4e4ec8f --- /dev/null +++ b/Tests/ManagedAnimal.m @@ -0,0 +1,20 @@ +// +// ManagedAnimal.m +// FoundryTests +// +// Created by Hirad Motamed on 2015-03-02. +// +// + +#import "ManagedAnimal.h" +#import "ManagedPerson.h" + + +@implementation ManagedAnimal + +@dynamic name; +@dynamic species; +@dynamic isExtinct; +@dynamic owner; + +@end diff --git a/Tests/ManagedPerson+ManagedPersonTests.m b/Tests/ManagedPerson+ManagedPersonTests.m index ef70d70..9c71c4d 100644 --- a/Tests/ManagedPerson+ManagedPersonTests.m +++ b/Tests/ManagedPerson+ManagedPersonTests.m @@ -7,6 +7,7 @@ // #import "ManagedPerson+ManagedPersonTests.h" +#import "ManagedAnimal.h" @implementation ManagedPerson (ManagedPersonTests) @@ -31,6 +32,7 @@ + (NSDictionary *)foundryBuildSpecs @"phoneNumber": [NSNumber numberWithInteger:FoundryPropertyTypePhoneNumber], @"uuid": [NSNumber numberWithInteger:FoundryPropertyTypeUUID], @"numberOfChildren": [NSNumber numberWithInteger:FoundryPropertyTypeCustom], + @"pets": @(FoundryPropertyTypeSpecificRelationship) }; } @@ -43,4 +45,25 @@ + (id)foundryAttributeForProperty:(NSString *)property return nil; } ++ (id)foundryRelatedObjectForProperty:(NSString *)property + inContext:(NSManagedObjectContext *)context { + if ([property isEqualToString:@"pets"]) { + NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([ManagedAnimal class])]; + fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]; + // hypothetically, we would search for a specific item here + NSError* error; + NSArray* fetchResults = [context executeFetchRequest:fetchRequest error:&error]; + if (fetchRequest == nil) { + // Log Error + return nil; + } + ManagedAnimal* animal = [fetchResults firstObject]; + if (animal) { + return [NSSet setWithObject:animal]; + } + } + + return nil; +} + @end diff --git a/Tests/ManagedPerson.h b/Tests/ManagedPerson.h index 06c1d84..9895510 100644 --- a/Tests/ManagedPerson.h +++ b/Tests/ManagedPerson.h @@ -2,32 +2,42 @@ // ManagedPerson.h // FoundryTests // -// Created by John Tumminaro on 4/21/14. +// Created by Hirad Motamed on 2015-03-02. // // #import #import +@class ManagedAnimal; @interface ManagedPerson : NSManagedObject -@property (nonatomic, retain) NSString * name; @property (nonatomic, retain) NSString * address; +@property (nonatomic, retain) NSString * bio; @property (nonatomic, retain) NSString * city; -@property (nonatomic, retain) NSString * state; -@property (nonatomic, retain) NSString * zipCode; @property (nonatomic, retain) NSString * country; -@property (nonatomic, retain) NSNumber * latitude; -@property (nonatomic, retain) NSNumber * longitude; @property (nonatomic, retain) NSString * email; -@property (nonatomic, retain) NSString * url; -@property (nonatomic, retain) NSString * ipV4Address; -@property (nonatomic, retain) NSString * hobbies; -@property (nonatomic, retain) NSString * bio; @property (nonatomic, retain) NSString * extendedBio; +@property (nonatomic, retain) NSString * hobbies; +@property (nonatomic, retain) NSString * ipV4Address; +@property (nonatomic, retain) NSNumber * latitude; +@property (nonatomic, retain) NSNumber * longitude; +@property (nonatomic, retain) NSString * name; +@property (nonatomic, retain) NSNumber * numberOfChildren; @property (nonatomic, retain) NSString * phoneNumber; +@property (nonatomic, retain) NSString * state; +@property (nonatomic, retain) NSString * url; @property (nonatomic, retain) NSString * uuid; -@property (nonatomic, retain) NSNumber * numberOfChildren; +@property (nonatomic, retain) NSString * zipCode; +@property (nonatomic, retain) NSSet *pets; +@end + +@interface ManagedPerson (CoreDataGeneratedAccessors) + +- (void)addPetsObject:(ManagedAnimal *)value; +- (void)removePetsObject:(ManagedAnimal *)value; +- (void)addPets:(NSSet *)values; +- (void)removePets:(NSSet *)values; @end diff --git a/Tests/ManagedPerson.m b/Tests/ManagedPerson.m index 704e125..2b5a868 100644 --- a/Tests/ManagedPerson.m +++ b/Tests/ManagedPerson.m @@ -2,31 +2,33 @@ // ManagedPerson.m // FoundryTests // -// Created by John Tumminaro on 4/21/14. +// Created by Hirad Motamed on 2015-03-02. // // #import "ManagedPerson.h" +#import "ManagedAnimal.h" @implementation ManagedPerson -@dynamic name; @dynamic address; +@dynamic bio; @dynamic city; -@dynamic state; -@dynamic zipCode; @dynamic country; -@dynamic latitude; -@dynamic longitude; @dynamic email; -@dynamic url; -@dynamic ipV4Address; -@dynamic hobbies; -@dynamic bio; @dynamic extendedBio; +@dynamic hobbies; +@dynamic ipV4Address; +@dynamic latitude; +@dynamic longitude; +@dynamic name; +@dynamic numberOfChildren; @dynamic phoneNumber; +@dynamic state; +@dynamic url; @dynamic uuid; -@dynamic numberOfChildren; +@dynamic zipCode; +@dynamic pets; @end diff --git a/Tests/foundryTestModel.xcdatamodeld/foundryTestModel.xcdatamodel/contents b/Tests/foundryTestModel.xcdatamodeld/foundryTestModel.xcdatamodel/contents index d9e2dd5..c9dc5dd 100644 --- a/Tests/foundryTestModel.xcdatamodeld/foundryTestModel.xcdatamodel/contents +++ b/Tests/foundryTestModel.xcdatamodeld/foundryTestModel.xcdatamodel/contents @@ -1,5 +1,11 @@ - + + + + + + + @@ -18,8 +24,10 @@ + - + + \ No newline at end of file