- ADD PNObjectConfig Class
- ADD PNObjectSubclassing Protocol
This commit is contained in:
parent
568ad5c409
commit
c3e77e7a09
@ -246,7 +246,7 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
CLASSPREFIX = PNObject;
|
||||
LastUpgradeCheck = 0510;
|
||||
LastUpgradeCheck = 0720;
|
||||
ORGANIZATIONNAME = "Giuseppe Nucifora";
|
||||
TargetAttributes = {
|
||||
6003F5AD195388D20070C39A = {
|
||||
@ -454,6 +454,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
@ -468,7 +469,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@ -501,7 +502,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
@ -517,7 +518,9 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "PNObject/PNObject-Prefix.pch";
|
||||
INFOPLIST_FILE = "PNObject/PNObject-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MODULE_NAME = ExampleApp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
@ -532,7 +535,9 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "PNObject/PNObject-Prefix.pch";
|
||||
INFOPLIST_FILE = "PNObject/PNObject-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MODULE_NAME = ExampleApp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
@ -555,6 +560,7 @@
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = "Tests/Tests-Info.plist";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/PNObject_Example.app/PNObject_Example";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
@ -574,6 +580,7 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
|
||||
INFOPLIST_FILE = "Tests/Tests-Info.plist";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/PNObject_Example.app/PNObject_Example";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0600"
|
||||
LastUpgradeVersion = "0720"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@ -23,10 +23,10 @@
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
@ -48,15 +48,18 @@
|
||||
ReferencedContainer = "container:PNObject.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
@ -72,10 +75,10 @@
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
|
||||
@ -7,12 +7,17 @@
|
||||
//
|
||||
|
||||
#import "PNObjectAppDelegate.h"
|
||||
#import "PNObject.h"
|
||||
|
||||
@implementation PNObjectAppDelegate
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
// Override point for customization after application launch.
|
||||
[PNObjectConfig sharedInstanceForEnvironments:@{ EnvironmentDevelopment : @"https://development.it/api/v1",
|
||||
EnvironmentStage : @"https://stage.it/api/v1",
|
||||
//EnvironmentProduction : @"https://production.it/api/v1"
|
||||
}];
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
#import "PNObjectViewController.h"
|
||||
//#import "PNObject.h"
|
||||
|
||||
|
||||
@interface PNObjectViewController ()
|
||||
|
||||
@end
|
||||
@ -18,7 +19,7 @@
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view, typically from a nib.
|
||||
// Do any additional setup after loading the view, typically from a nib.
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
|
||||
@ -8,7 +8,7 @@ target 'PNObject_Example' do
|
||||
pod 'PEAR-FileManager-iOS'
|
||||
pod 'NSDate_Utils'
|
||||
pod 'UIDevice-Utils'
|
||||
pod 'AFNetworking'
|
||||
pod 'AFNetworking',
|
||||
end
|
||||
|
||||
target 'PNObject_Tests' do
|
||||
|
||||
@ -57,4 +57,4 @@ SPEC CHECKSUMS:
|
||||
|
||||
PODFILE CHECKSUM: 6a156edc70605054ee3ec9b0a6d6af416e100bf0
|
||||
|
||||
COCOAPODS: 1.0.0.beta.1
|
||||
COCOAPODS: 1.0.0.beta.2
|
||||
|
||||
2
Example/Pods/Manifest.lock
generated
2
Example/Pods/Manifest.lock
generated
@ -57,4 +57,4 @@ SPEC CHECKSUMS:
|
||||
|
||||
PODFILE CHECKSUM: 6a156edc70605054ee3ec9b0a6d6af416e100bf0
|
||||
|
||||
COCOAPODS: 1.0.0.beta.1
|
||||
COCOAPODS: 1.0.0.beta.2
|
||||
|
||||
30
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
30
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
@ -101,6 +101,12 @@
|
||||
66A27898E989A3FA5C15AA671C4536F0 /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = ABC2BD19C88FB68928A4ACDD68A9A724 /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
67459AD239EF669A365519E06B45DCFE /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C30C86ADD90253F9625EE97E677992 /* EXPExpect.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
68152D921ABF6A423C192C04FDF94F0F /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D147D9B92257C3B94B576C35DC424BF /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
6836B1401C40187C00FEFA54 /* User.h in Headers */ = {isa = PBXBuildFile; fileRef = 6836B13E1C40187C00FEFA54 /* User.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
6836B1411C40187C00FEFA54 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6836B13F1C40187C00FEFA54 /* User.m */; };
|
||||
685036881C402C0F00202BC4 /* PNObjectSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = 685036871C402C0F00202BC4 /* PNObjectSubclassing.h */; };
|
||||
6850368C1C403F0D00202BC4 /* PNObjectSubclassing.h in Headers */ = {isa = PBXBuildFile; fileRef = 685036871C402C0F00202BC4 /* PNObjectSubclassing.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
6850368D1C403F2C00202BC4 /* PNObjectConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 6850368A1C40331900202BC4 /* PNObjectConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
6850368E1C40418E00202BC4 /* PNObjectConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 6850368B1C40331900202BC4 /* PNObjectConfig.m */; };
|
||||
68A38977EBAE334DC3C22386D00D2622 /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 01C0656AD6CD15FA1E1CD0B12E72DBAC /* AFNetworkReachabilityManager.m */; };
|
||||
6B8F67BF9EF9C0D399893E9C92482D49 /* SpectaUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E49D273A400D01F7C968DEDB310739A /* SpectaUtility.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
6E1D978790705E137FDE439AA68DD3AA /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 61F3C1DB6F4E00473063EACFC5515CC3 /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
@ -423,7 +429,12 @@
|
||||
64ABF623C50C215070FC44795D797682 /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = "<group>"; };
|
||||
64F490A38FEF85969F7D32CF7DAD9297 /* SPTSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSpec.m; path = Specta/Specta/SPTSpec.m; sourceTree = "<group>"; };
|
||||
680CFD1FCDFA6B058464345597F0BBF0 /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = "<group>"; };
|
||||
6836B13E1C40187C00FEFA54 /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; };
|
||||
6836B13F1C40187C00FEFA54 /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; };
|
||||
684260D2513FE8AD036B49C00B805318 /* Expecta.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Expecta.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
685036871C402C0F00202BC4 /* PNObjectSubclassing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PNObjectSubclassing.h; sourceTree = "<group>"; };
|
||||
6850368A1C40331900202BC4 /* PNObjectConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PNObjectConfig.h; sourceTree = "<group>"; };
|
||||
6850368B1C40331900202BC4 /* PNObjectConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PNObjectConfig.m; sourceTree = "<group>"; };
|
||||
69C520A4C76B14DB186E153AEE415291 /* SpectaTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaTypes.h; path = Specta/Specta/SpectaTypes.h; sourceTree = "<group>"; };
|
||||
6A9C98362B8CD1F0E2749529D53DEE66 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = "<group>"; };
|
||||
6BCF0B57CC5FE7DB7261CE7C60EAE6C1 /* NSDate_Utils.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NSDate_Utils.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@ -958,6 +969,15 @@
|
||||
path = AFNetworking;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6836B13D1C40185A00FEFA54 /* User */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6836B13E1C40187C00FEFA54 /* User.h */,
|
||||
6836B13F1C40187C00FEFA54 /* User.m */,
|
||||
);
|
||||
path = User;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6963333AA224B56F4EA948D1389FFA46 /* UIDevice-Utils */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -1121,10 +1141,14 @@
|
||||
AE64835AD928C05A0E07671000DB2081 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6836B13D1C40185A00FEFA54 /* User */,
|
||||
E1E0780BB830EFAC797B401B279BC515 /* PNObject.h */,
|
||||
941FEF92BBC85C24850889688C55A31A /* PNObject.m */,
|
||||
D0251859D2194B8DD130203343433439 /* PNObjectProperty.h */,
|
||||
570E079E6A901F2AD57E8F3241BCE8C3 /* PNObjectProperty.m */,
|
||||
685036871C402C0F00202BC4 /* PNObjectSubclassing.h */,
|
||||
6850368A1C40331900202BC4 /* PNObjectConfig.h */,
|
||||
6850368B1C40331900202BC4 /* PNObjectConfig.m */,
|
||||
);
|
||||
path = Classes;
|
||||
sourceTree = "<group>";
|
||||
@ -1340,6 +1364,7 @@
|
||||
659960F7E28E993E08CCC1E8A383E710 /* UIKit+AFNetworking.h in Headers */,
|
||||
D9F4E833E37B611B432F6B5D7072DDA2 /* UIProgressView+AFNetworking.h in Headers */,
|
||||
C6354FEC7728A4C86DAD8092509BA7D4 /* UIRefreshControl+AFNetworking.h in Headers */,
|
||||
685036881C402C0F00202BC4 /* PNObjectSubclassing.h in Headers */,
|
||||
AE2A07407FB50BA249984DC0620E84C0 /* UIWebView+AFNetworking.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -1406,6 +1431,9 @@
|
||||
003FC52F29E9B9B55FFC8C2C1E57D6BE /* PNObject-umbrella.h in Headers */,
|
||||
98A194768324928F76BF544EEE5EDBE5 /* PNObject.h in Headers */,
|
||||
410F22568A4D148214B412697A2322E6 /* PNObjectProperty.h in Headers */,
|
||||
6850368C1C403F0D00202BC4 /* PNObjectSubclassing.h in Headers */,
|
||||
6836B1401C40187C00FEFA54 /* User.h in Headers */,
|
||||
6850368D1C403F2C00202BC4 /* PNObjectConfig.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -1825,9 +1853,11 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6836B1411C40187C00FEFA54 /* User.m in Sources */,
|
||||
2FC59A81B07D43DCB4CAE4962F4A6018 /* PNObject-dummy.m in Sources */,
|
||||
4E9495420371C304945421EA68F69B22 /* PNObject.m in Sources */,
|
||||
E1D01718CD5CFB570AE7B1D46BCE1436 /* PNObjectProperty.m in Sources */,
|
||||
6850368E1C40418E00202BC4 /* PNObjectConfig.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
buildForArchiving = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = 'primary'
|
||||
BlueprintIdentifier = '541DB431996AD480A19E5139'
|
||||
BlueprintIdentifier = 'B9CEE2C8E8D9960342F45DDE'
|
||||
BlueprintName = 'PNObject'
|
||||
ReferencedContainer = 'container:Pods.xcodeproj'
|
||||
BuildableName = 'PNObject.framework'>
|
||||
|
||||
@ -4,8 +4,6 @@
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
@ -13,7 +11,7 @@
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
|
||||
@ -4,8 +4,6 @@
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
@ -13,7 +11,7 @@
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
|
||||
@ -4,8 +4,6 @@
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
@ -13,7 +11,7 @@
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1.2</string>
|
||||
<key>CFBundleSignature</key>
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
|
||||
@ -18,11 +18,11 @@ Pod::Spec.new do |s|
|
||||
# * Finally, don't worry about the indent, CocoaPods strips it!
|
||||
# s.description = <<-DESC DESC
|
||||
|
||||
s.homepage = "https://github.com/<GITHUB_USERNAME>/PNObject"
|
||||
s.homepage = "https://github.com/giuseppenucifora/PNObject"
|
||||
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
|
||||
s.license = 'MIT'
|
||||
s.author = { "Giuseppe Nucifora" => "me@giuseppenucifora.com" }
|
||||
s.source = { :git => "https://github.com/<GITHUB_USERNAME>/PNObject.git", :tag => s.version.to_s }
|
||||
s.source = { :git => "https://github.com/giuseppenucifora/PNObject.git", :tag => s.version.to_s }
|
||||
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
|
||||
|
||||
s.platform = :ios, '7.0'
|
||||
|
||||
@ -7,8 +7,10 @@
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "PNObjectSubclassing.h"
|
||||
#import "PNObjectConfig.h"
|
||||
|
||||
@interface PNObject : NSObject
|
||||
@interface PNObject : NSObject <PNObjectSubclassing>
|
||||
|
||||
@property (nonatomic, strong) NSString *objID;
|
||||
@property (nonatomic, strong) NSDate *createdDate;
|
||||
@ -17,4 +19,5 @@
|
||||
- (instancetype) initWithJSON:(NSDictionary*) JSON;
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
#import "PNObject.h"
|
||||
#import <PNObjectProperty.h>
|
||||
#import <NSDate_Utils/NSDate+NSDate_Util.h>
|
||||
#import <AFNetworking/AFNetworking.h>
|
||||
|
||||
@interface PNObject()
|
||||
|
||||
@ -24,7 +25,7 @@
|
||||
self = [super init];
|
||||
|
||||
if (self) {
|
||||
NSAssert(_objectMapping, @"You must create objectMapping");
|
||||
|
||||
|
||||
}
|
||||
return self;
|
||||
@ -33,6 +34,7 @@
|
||||
- (instancetype) initWithJSON:(NSDictionary*) JSON {
|
||||
self = [self init];
|
||||
if (self) {
|
||||
NSAssert(_objectMapping, @"You must create objectMapping");
|
||||
_JSON = [[NSDictionary alloc] initWithDictionary:JSON];
|
||||
|
||||
[self populateObjectFromJSON:JSON];
|
||||
@ -247,88 +249,20 @@
|
||||
NSLog(@"%@",errorStr);
|
||||
}
|
||||
})();
|
||||
/*// char
|
||||
if([propertyType isEqualToString:@"c"]) {
|
||||
char val = [value charValue];
|
||||
[self setValue:@(val) forKey:propertyName];
|
||||
}
|
||||
// double
|
||||
else if([propertyType isEqualToString:@"d"]) {
|
||||
double val = [value doubleValue];
|
||||
[self setValue:@(val) forKey:propertyName];
|
||||
}
|
||||
// float
|
||||
else if([propertyType isEqualToString:@"f"]) {
|
||||
float val = [value floatValue];
|
||||
[self setValue:@(val) forKey:propertyName];
|
||||
}
|
||||
// integer
|
||||
else if([propertyType isEqualToString:@"i"]) {
|
||||
int val = [value intValue];
|
||||
[self setValue:@(val) forKey:propertyName];
|
||||
}
|
||||
// long
|
||||
else if([propertyType isEqualToString:@"l"]) {
|
||||
long val = [value longValue];
|
||||
[self setValue:@(val) forKey:propertyName];
|
||||
}
|
||||
// short
|
||||
else if([propertyType isEqualToString:@"s"]) {
|
||||
short val = [value shortValue];
|
||||
[self setValue:@(val) forKey:propertyName];
|
||||
}
|
||||
// NSString
|
||||
else if([propertyType isEqualToString:@"NSString"]) {
|
||||
NSString *val = [NSString stringWithFormat:@"%@", value];
|
||||
[self setValue:val forKey:propertyName];
|
||||
}
|
||||
// NSNumber
|
||||
else if([propertyType isEqualToString:@"NSNumber"]) {
|
||||
NSInteger val = [value integerValue];
|
||||
[self setValue:@(val) forKey:propertyName];
|
||||
}
|
||||
// NSDate
|
||||
else if([propertyType isEqualToString:@"NSDate"]) {
|
||||
|
||||
|
||||
NSString *str = [NSString stringWithFormat:@"%@", value];
|
||||
NSDate *val = [NSDate dateFromString:str];
|
||||
[self setValue:val forKey:propertyName];
|
||||
}
|
||||
// NSURL
|
||||
else if([propertyType isEqualToString:@"NSURL"]) {
|
||||
NSString *str = [NSString stringWithFormat:@"%@", value];
|
||||
NSURL *val = [NSURL URLWithString:str];
|
||||
[self setValue:val forKey:propertyName];
|
||||
}
|
||||
// NSArray, NSMutableArray
|
||||
else if([propertyType isEqualToString:@"NSArray"] ||
|
||||
[propertyType isEqualToString:@"NSMutableArray"]) {
|
||||
|
||||
NSMutableArray *arr = [NSMutableArray array];
|
||||
for(id JSONObject in value) {
|
||||
PNObject *val = [[NSClassFromString(mappedJSONType) alloc] initWithJSON:JSONObject];
|
||||
[arr addObject:val];
|
||||
}
|
||||
|
||||
[self setValue:arr forKey:propertyName];
|
||||
|
||||
}
|
||||
// Other LLModel or an unidentified value
|
||||
else {
|
||||
BOOL isPNObjectSubclass = [NSClassFromString(propertyType) isSubclassOfClass:[PNObject class]];
|
||||
if(isPNObjectSubclass) {
|
||||
PNObject *val = [[NSClassFromString(propertyType) alloc] initWithJSON:value];
|
||||
[self setValue:val forKey:propertyName];
|
||||
}
|
||||
else {
|
||||
NSString *errorStr = [NSString stringWithFormat:@"Property '%@' could not be assigned any value.", propertyName];
|
||||
NSLog(@"%@",errorStr);
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#pragma mark PNObjectSubclassing
|
||||
|
||||
+ (NSString *) objectClassName {
|
||||
|
||||
}
|
||||
|
||||
+ (NSDictionary *) objcetMapping {
|
||||
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@end
|
||||
|
||||
47
Pod/Classes/PNObjectConfig.h
Normal file
47
Pod/Classes/PNObjectConfig.h
Normal file
@ -0,0 +1,47 @@
|
||||
//
|
||||
// PNObjectConfig.h
|
||||
// Pods
|
||||
//
|
||||
// Created by Giuseppe Nucifora on 08/01/16.
|
||||
//
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef NS_ENUM(NSInteger, Environment) {
|
||||
Development,
|
||||
Stage,
|
||||
Production
|
||||
};
|
||||
|
||||
extern NSString* const EnvironmentProduction;
|
||||
extern NSString* const EnvironmentStage;
|
||||
extern NSString* const EnvironmentDevelopment;
|
||||
|
||||
@interface PNObjectConfig : NSObject
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* gets singleton object.
|
||||
* @return singleton
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param clientIdsForEnvironments
|
||||
* For example,
|
||||
* @{ PNObjectConfigDevelopment : @"https://development.it/api/v1",
|
||||
* PNObjectConfigEnvStage : @"ttps://stage.it/api/v1",
|
||||
* PNObjectConfigEnvProduction : @"ttps://production.it/api/v1"
|
||||
* }
|
||||
*
|
||||
* @return singleton
|
||||
*/
|
||||
+ (instancetype) sharedInstanceForEnvironments:(NSDictionary *) endpointUrlsForEnvironments;
|
||||
|
||||
- (void) enableEnvironment:(Environment) env;
|
||||
|
||||
|
||||
|
||||
@end
|
||||
146
Pod/Classes/PNObjectConfig.m
Normal file
146
Pod/Classes/PNObjectConfig.m
Normal file
@ -0,0 +1,146 @@
|
||||
//
|
||||
// PNObjectConfig.m
|
||||
// Pods
|
||||
//
|
||||
// Created by Giuseppe Nucifora on 08/01/16.
|
||||
//
|
||||
//
|
||||
|
||||
#import "PNObjectConfig.h"
|
||||
|
||||
NSString* const EnvironmentProduction = @"PNObjectConfigEnvProduction";
|
||||
NSString* const EnvironmentStage = @"PNObjectConfigEnvStage";
|
||||
NSString* const EnvironmentDevelopment = @"PNObjectConfigDevelopment";
|
||||
|
||||
|
||||
@interface PNObjectConfig()
|
||||
|
||||
@property (nonatomic, strong) NSMutableDictionary *configuration;
|
||||
@property (nonatomic) BOOL devEnabled;
|
||||
@property (nonatomic) BOOL stageEnabled;
|
||||
@property (nonatomic) BOOL productionEnabled;
|
||||
|
||||
@end
|
||||
|
||||
@implementation PNObjectConfig
|
||||
|
||||
|
||||
|
||||
static PNObjectConfig *SINGLETON = nil;
|
||||
|
||||
static bool isFirstAccess = YES;
|
||||
|
||||
#pragma mark - Public Method
|
||||
|
||||
+ (id)sharedInstance
|
||||
{
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
isFirstAccess = NO;
|
||||
SINGLETON = [[super allocWithZone:NULL] init];
|
||||
});
|
||||
|
||||
return SINGLETON;
|
||||
}
|
||||
|
||||
#pragma mark - Life Cycle
|
||||
|
||||
+ (instancetype) sharedInstanceForEnvironments:(NSDictionary *) endpointUrlsForEnvironments {
|
||||
SINGLETON = [self sharedInstance];
|
||||
|
||||
if (SINGLETON) {
|
||||
for (NSString *key in [endpointUrlsForEnvironments allKeys]) {
|
||||
|
||||
((void (^)())@{
|
||||
EnvironmentDevelopment : ^{
|
||||
NSURL * endpointUrl = [NSURL URLWithString:[endpointUrlsForEnvironments objectForKey:key]];
|
||||
if (endpointUrl) {
|
||||
[SINGLETON.configuration setValue:endpointUrl forKey:key];
|
||||
SINGLETON.devEnabled = YES;
|
||||
}
|
||||
|
||||
},
|
||||
EnvironmentStage : ^{
|
||||
NSURL * endpointUrl = [NSURL URLWithString:[endpointUrlsForEnvironments objectForKey:key]];
|
||||
if (endpointUrl) {
|
||||
[SINGLETON.configuration setValue:endpointUrl forKey:key];
|
||||
SINGLETON.stageEnabled = YES;
|
||||
}
|
||||
},
|
||||
EnvironmentProduction : ^{
|
||||
NSURL * endpointUrl = [NSURL URLWithString:[endpointUrlsForEnvironments objectForKey:key]];
|
||||
if (endpointUrl) {
|
||||
[SINGLETON.configuration setValue:endpointUrl forKey:key];
|
||||
SINGLETON.productionEnabled = YES;
|
||||
}
|
||||
}
|
||||
}[key] ?: ^{
|
||||
|
||||
})();
|
||||
}
|
||||
NSAssert(SINGLETON.productionEnabled, @"EnvironmentProduction must be valid endpoint url");
|
||||
|
||||
NSLog(@"Config : %@",SINGLETON.configuration);
|
||||
}
|
||||
return SINGLETON;
|
||||
}
|
||||
|
||||
+ (id) allocWithZone:(NSZone *)zone
|
||||
{
|
||||
return [self sharedInstance];
|
||||
}
|
||||
|
||||
+ (id)copyWithZone:(struct _NSZone *)zone
|
||||
{
|
||||
return [self sharedInstance];
|
||||
}
|
||||
|
||||
+ (id)mutableCopyWithZone:(struct _NSZone *)zone
|
||||
{
|
||||
return [self sharedInstance];
|
||||
}
|
||||
|
||||
- (id)copy
|
||||
{
|
||||
return [[PNObjectConfig alloc] init];
|
||||
}
|
||||
|
||||
- (id)mutableCopy
|
||||
{
|
||||
return [[PNObjectConfig alloc] init];
|
||||
}
|
||||
|
||||
- (id) init
|
||||
{
|
||||
if(SINGLETON){
|
||||
return SINGLETON;
|
||||
}
|
||||
if (isFirstAccess) {
|
||||
[self doesNotRecognizeSelector:_cmd];
|
||||
}
|
||||
self = [super init];
|
||||
|
||||
if (self) {
|
||||
_configuration = [[NSMutableDictionary alloc] init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) enableEnvironment:(Environment) env {
|
||||
|
||||
switch (env) {
|
||||
case Development:{
|
||||
|
||||
}
|
||||
break;
|
||||
case Stage:{
|
||||
|
||||
}
|
||||
break;
|
||||
case Production:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
20
Pod/Classes/PNObjectSubclassing.h
Normal file
20
Pod/Classes/PNObjectSubclassing.h
Normal file
@ -0,0 +1,20 @@
|
||||
//
|
||||
// PNObjectSubclassing.h
|
||||
// Pods
|
||||
//
|
||||
// Created by Giuseppe Nucifora on 08/01/16.
|
||||
//
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@protocol PNObjectSubclassing <NSObject>
|
||||
|
||||
@required
|
||||
|
||||
+ (NSString *) objectClassName;
|
||||
|
||||
+ (NSDictionary *) objcetMapping;
|
||||
|
||||
@end
|
||||
13
Pod/Classes/User/User.h
Normal file
13
Pod/Classes/User/User.h
Normal file
@ -0,0 +1,13 @@
|
||||
//
|
||||
// User.h
|
||||
// Pods
|
||||
//
|
||||
// Created by Giuseppe Nucifora on 08/01/16.
|
||||
//
|
||||
//
|
||||
|
||||
#import <PNObject/PNObject.h>
|
||||
|
||||
@interface User : PNObject
|
||||
|
||||
@end
|
||||
22
Pod/Classes/User/User.m
Normal file
22
Pod/Classes/User/User.m
Normal file
@ -0,0 +1,22 @@
|
||||
//
|
||||
// User.m
|
||||
// Pods
|
||||
//
|
||||
// Created by Giuseppe Nucifora on 08/01/16.
|
||||
//
|
||||
//
|
||||
|
||||
#import "User.h"
|
||||
|
||||
@implementation User
|
||||
|
||||
- (instancetype) initWithJSON:(NSDictionary *)JSON {
|
||||
|
||||
self = [super initWithJSON:JSON];
|
||||
if (self) {
|
||||
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
Loading…
x
Reference in New Issue
Block a user