Skip to content

Commit

Permalink
Update example project to Swift 3
Browse files Browse the repository at this point in the history
Remaining:
- Wait for ReactiveSwift OFFICIAL (not alpha) 1.0 is released..
- Hopefully it will contain substitutes for the (now purged) legacy "rac_***" functions (ReactiveCocoa/ReactiveSwift#37)

- Fix all FIXMES
  • Loading branch information
Magnus Eriksson committed Nov 1, 2016
1 parent 4152929 commit 9d3c2ab
Show file tree
Hide file tree
Showing 23 changed files with 291 additions and 267 deletions.
2 changes: 1 addition & 1 deletion Example/Cartfile
@@ -1,3 +1,3 @@
github "johnsundell/unbox"
github "johnsundell/wrap"
github "ReactiveCocoa/ReactiveCocoa" == 4.2.0
github "ReactiveCocoa/ReactiveSwift"
8 changes: 4 additions & 4 deletions Example/Cartfile.resolved
@@ -1,4 +1,4 @@
github "antitypical/Result" "2.0.0"
github "johnsundell/unbox" "1.7"
github "johnsundell/wrap" "1.1.1"
github "ReactiveCocoa/ReactiveCocoa" "v4.2.0"
github "antitypical/Result" "3.0.0"
github "johnsundell/unbox" "2.0"
github "johnsundell/wrap" "2.0"
github "ReactiveCocoa/ReactiveSwift" "1.0.0-alpha.1"
72 changes: 49 additions & 23 deletions Example/Example.xcodeproj/project.pbxproj
Expand Up @@ -28,15 +28,15 @@
5F8E78F91D100B9700D2A5EA /* SignalProducerType+Authentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F8E78F81D100B9700D2A5EA /* SignalProducerType+Authentication.swift */; };
5F8E79031D1094CA00D2A5EA /* UserListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F8E79011D1094CA00D2A5EA /* UserListViewController.swift */; };
5F8E79041D1094CA00D2A5EA /* User.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F8E79021D1094CA00D2A5EA /* User.storyboard */; };
6708E95E1D08182C00D4191F /* ReactiveCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6708E9571D08182C00D4191F /* ReactiveCocoa.framework */; };
6708E95F1D08182C00D4191F /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6708E9581D08182C00D4191F /* Result.framework */; };
6708E9601D08182C00D4191F /* Unbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6708E9591D08182C00D4191F /* Unbox.framework */; };
6708E9611D08182C00D4191F /* Wrap.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6708E95A1D08182C00D4191F /* Wrap.framework */; };
5F9748561DA3D01500D3D49A /* Unbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F9748551DA3D01500D3D49A /* Unbox.framework */; };
5FCDC7861D9A8B8E0006E076 /* ReactiveSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCDC7831D9A8B8E0006E076 /* ReactiveSwift.framework */; };
5FCDC7871D9A8B8E0006E076 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCDC7841D9A8B8E0006E076 /* Result.framework */; };
5FCDC7881D9A8B8E0006E076 /* Wrap.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCDC7851D9A8B8E0006E076 /* Wrap.framework */; };
952231391CEDF06E005B085D /* ApeChatApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 952231351CEDF06E005B085D /* ApeChatApi.swift */; };
9522313A1CEDF06E005B085D /* ApeChatApiEndpoints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 952231361CEDF06E005B085D /* ApeChatApiEndpoints.swift */; };
9522313B1CEDF06E005B085D /* NetworkedApeChatApiProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 952231371CEDF06E005B085D /* NetworkedApeChatApiProvider.swift */; };
9522313C1CEDF06E005B085D /* MockApeChatApiProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 952231381CEDF06E005B085D /* MockApeChatApiProvider.swift */; };
958335781CF3B4D300F2B34F /* NSDateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958335771CF3B4D300F2B34F /* NSDateExtension.swift */; };
958335781CF3B4D300F2B34F /* Date+ISO8601.swift in Sources */ = {isa = PBXBuildFile; fileRef = 958335771CF3B4D300F2B34F /* Date+ISO8601.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -107,10 +107,10 @@
5F8E78F81D100B9700D2A5EA /* SignalProducerType+Authentication.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SignalProducerType+Authentication.swift"; sourceTree = "<group>"; };
5F8E79011D1094CA00D2A5EA /* UserListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserListViewController.swift; sourceTree = "<group>"; };
5F8E79021D1094CA00D2A5EA /* User.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = User.storyboard; sourceTree = "<group>"; };
6708E9571D08182C00D4191F /* ReactiveCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReactiveCocoa.framework; path = Carthage/Build/iOS/ReactiveCocoa.framework; sourceTree = "<group>"; };
6708E9581D08182C00D4191F /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/iOS/Result.framework; sourceTree = "<group>"; };
6708E9591D08182C00D4191F /* Unbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Unbox.framework; path = Carthage/Build/iOS/Unbox.framework; sourceTree = "<group>"; };
6708E95A1D08182C00D4191F /* Wrap.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Wrap.framework; path = Carthage/Build/iOS/Wrap.framework; sourceTree = "<group>"; };
5F9748551DA3D01500D3D49A /* Unbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Unbox.framework; path = Carthage/Build/iOS/Unbox.framework; sourceTree = "<group>"; };
5FCDC7831D9A8B8E0006E076 /* ReactiveSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReactiveSwift.framework; path = Carthage/Build/iOS/ReactiveSwift.framework; sourceTree = "<group>"; };
5FCDC7841D9A8B8E0006E076 /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/iOS/Result.framework; sourceTree = "<group>"; };
5FCDC7851D9A8B8E0006E076 /* Wrap.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Wrap.framework; path = Carthage/Build/iOS/Wrap.framework; sourceTree = "<group>"; };
67276A8C1C2065260062C807 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
67276AA21C2065270062C807 /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
67276AAD1C2065270062C807 /* ExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
Expand All @@ -119,18 +119,18 @@
952231361CEDF06E005B085D /* ApeChatApiEndpoints.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ApeChatApiEndpoints.swift; path = ApeChatProvider/ApeChatApiEndpoints.swift; sourceTree = "<group>"; };
952231371CEDF06E005B085D /* NetworkedApeChatApiProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NetworkedApeChatApiProvider.swift; path = ApeChatProvider/NetworkedApeChatApiProvider.swift; sourceTree = "<group>"; };
952231381CEDF06E005B085D /* MockApeChatApiProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MockApeChatApiProvider.swift; path = ApeChatProvider/MockApeChatApiProvider.swift; sourceTree = "<group>"; };
958335771CF3B4D300F2B34F /* NSDateExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDateExtension.swift; sourceTree = "<group>"; };
958335771CF3B4D300F2B34F /* Date+ISO8601.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Date+ISO8601.swift"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
67276A891C2065260062C807 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
6708E95E1D08182C00D4191F /* ReactiveCocoa.framework in Frameworks */,
6708E95F1D08182C00D4191F /* Result.framework in Frameworks */,
6708E9601D08182C00D4191F /* Unbox.framework in Frameworks */,
6708E9611D08182C00D4191F /* Wrap.framework in Frameworks */,
5FCDC7881D9A8B8E0006E076 /* Wrap.framework in Frameworks */,
5FCDC7861D9A8B8E0006E076 /* ReactiveSwift.framework in Frameworks */,
5FCDC7871D9A8B8E0006E076 /* Result.framework in Frameworks */,
5F9748561DA3D01500D3D49A /* Unbox.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -177,7 +177,7 @@
22F316F51C242D1E007EA50C /* Helpers */ = {
isa = PBXGroup;
children = (
958335771CF3B4D300F2B34F /* NSDateExtension.swift */,
958335771CF3B4D300F2B34F /* Date+ISO8601.swift */,
5F8E78F81D100B9700D2A5EA /* SignalProducerType+Authentication.swift */,
5F25CB181D119A7D005A1D3F /* TableViewDataSource.swift */,
5F25CB1A1D119ED0005A1D3F /* UIViewController+Presentation.swift */,
Expand Down Expand Up @@ -371,10 +371,10 @@
64ADCB2CF59BC56EDB5258D3 /* Frameworks */ = {
isa = PBXGroup;
children = (
6708E9571D08182C00D4191F /* ReactiveCocoa.framework */,
6708E9581D08182C00D4191F /* Result.framework */,
6708E9591D08182C00D4191F /* Unbox.framework */,
6708E95A1D08182C00D4191F /* Wrap.framework */,
5F9748551DA3D01500D3D49A /* Unbox.framework */,
5FCDC7831D9A8B8E0006E076 /* ReactiveSwift.framework */,
5FCDC7841D9A8B8E0006E076 /* Result.framework */,
5FCDC7851D9A8B8E0006E076 /* Wrap.framework */,
);
name = Frameworks;
sourceTree = "<group>";
Expand Down Expand Up @@ -486,7 +486,7 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0720;
LastUpgradeCheck = 0720;
LastUpgradeCheck = 0800;
ORGANIZATIONNAME = Apegroup;
TargetAttributes = {
67276A8B1C2065260062C807 = {
Expand All @@ -499,6 +499,7 @@
};
67276AAC1C2065270062C807 = {
CreatedOnToolsVersion = 7.2;
DevelopmentTeam = Q48PCXNS55;
TestTargetID = 67276A8B1C2065260062C807;
};
};
Expand Down Expand Up @@ -583,10 +584,10 @@
files = (
);
inputPaths = (
"$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework",
"$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework",
"$(SRCROOT)/Carthage/Build/iOS/Result.framework",
"$(SRCROOT)/Carthage/Build/iOS/Unbox.framework",
"$(SRCROOT)/Carthage/Build/iOS/Wrap.framework",
"$(SRCROOT)/Carthage/Build/iOS/Unbox.framework",
);
name = Carthage;
outputPaths = (
Expand Down Expand Up @@ -616,7 +617,7 @@
5F86D5D51D133F3F005859CF /* DataValidator.swift in Sources */,
5F8E79031D1094CA00D2A5EA /* UserListViewController.swift in Sources */,
5F17A5091CDB4E6500D32AF9 /* AppConfiguration.swift in Sources */,
958335781CF3B4D300F2B34F /* NSDateExtension.swift in Sources */,
958335781CF3B4D300F2B34F /* Date+ISO8601.swift in Sources */,
9522313B1CEDF06E005B085D /* NetworkedApeChatApiProvider.swift in Sources */,
5F8E78F91D100B9700D2A5EA /* SignalProducerType+Authentication.swift in Sources */,
);
Expand Down Expand Up @@ -673,8 +674,10 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
Expand All @@ -701,6 +704,7 @@
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
Expand All @@ -718,8 +722,10 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Distribution";
Expand All @@ -740,6 +746,8 @@
MTL_ENABLE_DEBUG_INFO = NO;
PROVISIONING_PROFILE = "";
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
Expand All @@ -749,9 +757,12 @@
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
DEVELOPMENT_TEAM = Q48PCXNS55;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
HostBaseURL = "https://stage.host.com/api/";
INFOPLIST_FILE = Project/Application/Info.plist;
Expand All @@ -760,6 +771,8 @@
OTHER_SWIFT_FLAGS = "$(inherited) -D DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = com.apegroup.APEReactiveNetworkingExample;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "5210fb9f-cf62-46fc-9496-0cc96ddf16a6";
PROVISIONING_PROFILE_SPECIFIER = "apegroup InHouse";
SWIFT_VERSION = 3.0;
};
name = Debug;
Expand All @@ -771,6 +784,7 @@
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
GCC_PREPROCESSOR_DEFINITIONS = (
"RELEASE=1",
Expand Down Expand Up @@ -813,10 +827,14 @@
67276ABD1C2065270062C807 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
DEVELOPMENT_TEAM = Q48PCXNS55;
INFOPLIST_FILE = Tests/UI/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.apegroup.apereactivenetworkingexampleUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "5210fb9f-cf62-46fc-9496-0cc96ddf16a6";
PROVISIONING_PROFILE_SPECIFIER = "apegroup InHouse";
TEST_TARGET_NAME = Example;
USES_XCTRUNNER = YES;
};
Expand Down Expand Up @@ -847,8 +865,10 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Distribution";
Expand Down Expand Up @@ -876,6 +896,7 @@
PROVISIONING_PROFILE = "395cb274-c6f6-47d8-aefc-a32b83863b91";
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
Expand All @@ -888,6 +909,7 @@
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
Expand Down Expand Up @@ -942,8 +964,10 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Distribution";
Expand All @@ -964,6 +988,7 @@
MTL_ENABLE_DEBUG_INFO = NO;
PROVISIONING_PROFILE = "395cb274-c6f6-47d8-aefc-a32b83863b91";
SDKROOT = iphoneos;
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
Expand All @@ -976,6 +1001,7 @@
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
GCC_PREPROCESSOR_DEFINITIONS = (
"PREVIEW=1",
Expand Down
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0730"
LastUpgradeVersion = "0800"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
28 changes: 14 additions & 14 deletions Example/Project/Application/AppConfiguration.swift
Expand Up @@ -12,12 +12,12 @@ struct AppConfiguration {

static let environment: Environment = {

var environment = Environment.Production
var environment = Environment.production

#if DEBUG
environment = .Debug
environment = .debug
#elseif PREVIEW
environment = .Preview
environment = .preview
#endif

// print("Application is built with configuration: '\(environment)'")
Expand All @@ -26,31 +26,31 @@ struct AppConfiguration {


static func isProductionBuild() -> Bool {
return environment == Environment.Production
return environment == .production
}
}

/* Enum that represents the different environments, e.g. "baseUrl" etc
* Possible to extend with additional environments and properties.
*/
enum Environment: String {
case Debug
case Preview
case Production
case debug
case preview
case production

private var urlProtocol: String {
switch self {
case Debug: return "https://"
case Preview: return "https://"
case Production: return "https://"
case .debug: return "https://"
case .preview: return "https://"
case .production: return "https://"
}
}

var baseUrl: String {
switch self {
case Debug: return urlProtocol + "private-ea0bb-apechat.apiary-mock.com"
case Preview: return urlProtocol + "private-05732-apechat.apiary-mock.com"
case Production: return urlProtocol + "private-05732-apechat.apiary-mock.com"
case .debug: return urlProtocol + "private-ea0bb-apechat.apiary-mock.com"
case .preview: return urlProtocol + "private-05732-apechat.apiary-mock.com"
case .production: return urlProtocol + "private-05732-apechat.apiary-mock.com"
}
}
}
}
3 changes: 1 addition & 2 deletions Example/Project/Application/AppDelegate.swift
Expand Up @@ -13,8 +13,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?


func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
return true
}
}
Expand Down
1 change: 1 addition & 0 deletions Example/Project/Application/Info.plist
Expand Up @@ -45,6 +45,7 @@
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
Expand Down

0 comments on commit 9d3c2ab

Please sign in to comment.