Skip to content

Commit 8db99fd

Browse files
authored
Merge pull request #4 from teepsllc/feature/codeable
Codable
2 parents 97e9291 + 7179f13 commit 8db99fd

File tree

13 files changed

+202
-108
lines changed

13 files changed

+202
-108
lines changed

BuckoNetworking.xcodeproj/project.pbxproj

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,15 @@
1212
6A7D02871E4CC09400E66FD0 /* BuckoNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A7D02471E4CB6FE00E66FD0 /* BuckoNetworking.framework */; };
1313
6A7D02931E4CC12900E66FD0 /* Bucko.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D028D1E4CC12900E66FD0 /* Bucko.swift */; };
1414
6A7D02941E4CC12900E66FD0 /* BuckoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D028E1E4CC12900E66FD0 /* BuckoError.swift */; };
15-
6A7D02961E4CC12900E66FD0 /* JSONDecodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D02911E4CC12900E66FD0 /* JSONDecodable.swift */; };
16-
6A7D02971E4CC12900E66FD0 /* JSONDecodableEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D02921E4CC12900E66FD0 /* JSONDecodableEndpoint.swift */; };
15+
6A7D02971E4CC12900E66FD0 /* DecodableEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D02921E4CC12900E66FD0 /* DecodableEndpoint.swift */; };
1716
6A7D02EE1E4CC87200E66FD0 /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D02ED1E4CC87200E66FD0 /* Endpoint.swift */; };
1817
6ABB44EB1EF8644F00E344AF /* BuckoNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ABB44E21EF8644F00E344AF /* BuckoNetworking.framework */; };
19-
6ABB44FC1EF8661100E344AF /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ABB44FA1EF8661100E344AF /* SwiftyJSON.framework */; };
2018
6ABB44FD1EF8661100E344AF /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ABB44FB1EF8661100E344AF /* Alamofire.framework */; };
2119
6ABB44FE1EF86BFF00E344AF /* Bucko.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D028D1E4CC12900E66FD0 /* Bucko.swift */; };
2220
6ABB44FF1EF86C0200E344AF /* BuckoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D028E1E4CC12900E66FD0 /* BuckoError.swift */; };
2321
6ABB45001EF86C0400E344AF /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D02ED1E4CC87200E66FD0 /* Endpoint.swift */; };
24-
6ABB45011EF86C0600E344AF /* JSONDecodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D02911E4CC12900E66FD0 /* JSONDecodable.swift */; };
25-
6ABB45021EF86C0900E344AF /* JSONDecodableEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D02921E4CC12900E66FD0 /* JSONDecodableEndpoint.swift */; };
22+
6ABB45021EF86C0900E344AF /* DecodableEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D02921E4CC12900E66FD0 /* DecodableEndpoint.swift */; };
2623
6ABB45041EF86DE200E344AF /* BuckoNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A7D02751E4CBEFC00E66FD0 /* BuckoNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; };
27-
6AEC6FDD1E84B05500BBD3F7 /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AEC6FDB1E84B05500BBD3F7 /* SwiftyJSON.framework */; };
2824
6AEC6FDE1E84B05500BBD3F7 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AEC6FDC1E84B05500BBD3F7 /* Alamofire.framework */; };
2925
/* End PBXBuildFile section */
3026

@@ -54,8 +50,7 @@
5450
6A7D02861E4CC09400E66FD0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
5551
6A7D028D1E4CC12900E66FD0 /* Bucko.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Bucko.swift; sourceTree = "<group>"; };
5652
6A7D028E1E4CC12900E66FD0 /* BuckoError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BuckoError.swift; sourceTree = "<group>"; };
57-
6A7D02911E4CC12900E66FD0 /* JSONDecodable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JSONDecodable.swift; sourceTree = "<group>"; };
58-
6A7D02921E4CC12900E66FD0 /* JSONDecodableEndpoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JSONDecodableEndpoint.swift; sourceTree = "<group>"; };
53+
6A7D02921E4CC12900E66FD0 /* DecodableEndpoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DecodableEndpoint.swift; sourceTree = "<group>"; };
5954
6A7D02D51E4CC5E900E66FD0 /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Alamofire.framework; path = "Carthage/Checkouts/Alamofire/build/Debug-iphoneos/Alamofire.framework"; sourceTree = "<group>"; };
6055
6A7D02D71E4CC5EE00E66FD0 /* SwiftyJSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyJSON.framework; path = "Carthage/Checkouts/SwiftyJSON/build/Debug-iphoneos/SwiftyJSON.framework"; sourceTree = "<group>"; };
6156
6A7D02ED1E4CC87200E66FD0 /* Endpoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Endpoint.swift; sourceTree = "<group>"; };
@@ -72,7 +67,6 @@
7267
isa = PBXFrameworksBuildPhase;
7368
buildActionMask = 2147483647;
7469
files = (
75-
6AEC6FDD1E84B05500BBD3F7 /* SwiftyJSON.framework in Frameworks */,
7670
6AEC6FDE1E84B05500BBD3F7 /* Alamofire.framework in Frameworks */,
7771
);
7872
runOnlyForDeploymentPostprocessing = 0;
@@ -89,7 +83,6 @@
8983
isa = PBXFrameworksBuildPhase;
9084
buildActionMask = 2147483647;
9185
files = (
92-
6ABB44FC1EF8661100E344AF /* SwiftyJSON.framework in Frameworks */,
9386
6ABB44FD1EF8661100E344AF /* Alamofire.framework in Frameworks */,
9487
);
9588
runOnlyForDeploymentPostprocessing = 0;
@@ -151,8 +144,7 @@
151144
isa = PBXGroup;
152145
children = (
153146
6A7D02ED1E4CC87200E66FD0 /* Endpoint.swift */,
154-
6A7D02911E4CC12900E66FD0 /* JSONDecodable.swift */,
155-
6A7D02921E4CC12900E66FD0 /* JSONDecodableEndpoint.swift */,
147+
6A7D02921E4CC12900E66FD0 /* DecodableEndpoint.swift */,
156148
);
157149
path = Protocols;
158150
sourceTree = "<group>";
@@ -272,17 +264,18 @@
272264
isa = PBXProject;
273265
attributes = {
274266
LastSwiftUpdateCheck = 0830;
275-
LastUpgradeCheck = 0820;
267+
LastUpgradeCheck = 0920;
276268
ORGANIZATIONNAME = "Teeps LLC";
277269
TargetAttributes = {
278270
6A7D02461E4CB6FE00E66FD0 = {
279271
CreatedOnToolsVersion = 8.2.1;
280-
LastSwiftMigration = 0820;
272+
LastSwiftMigration = 0920;
281273
ProvisioningStyle = Automatic;
282274
};
283275
6A7D02811E4CC09400E66FD0 = {
284276
CreatedOnToolsVersion = 8.2.1;
285277
DevelopmentTeam = 7X55CRBHSJ;
278+
LastSwiftMigration = 0920;
286279
ProvisioningStyle = Automatic;
287280
};
288281
6ABB44E11EF8644F00E344AF = {
@@ -373,8 +366,7 @@
373366
files = (
374367
6A7D02931E4CC12900E66FD0 /* Bucko.swift in Sources */,
375368
6A7D02941E4CC12900E66FD0 /* BuckoError.swift in Sources */,
376-
6A7D02971E4CC12900E66FD0 /* JSONDecodableEndpoint.swift in Sources */,
377-
6A7D02961E4CC12900E66FD0 /* JSONDecodable.swift in Sources */,
369+
6A7D02971E4CC12900E66FD0 /* DecodableEndpoint.swift in Sources */,
378370
6A7D02EE1E4CC87200E66FD0 /* Endpoint.swift in Sources */,
379371
);
380372
runOnlyForDeploymentPostprocessing = 0;
@@ -394,8 +386,7 @@
394386
6ABB44FE1EF86BFF00E344AF /* Bucko.swift in Sources */,
395387
6ABB45001EF86C0400E344AF /* Endpoint.swift in Sources */,
396388
6ABB44FF1EF86C0200E344AF /* BuckoError.swift in Sources */,
397-
6ABB45021EF86C0900E344AF /* JSONDecodableEndpoint.swift in Sources */,
398-
6ABB45011EF86C0600E344AF /* JSONDecodable.swift in Sources */,
389+
6ABB45021EF86C0900E344AF /* DecodableEndpoint.swift in Sources */,
399390
);
400391
runOnlyForDeploymentPostprocessing = 0;
401392
};
@@ -431,15 +422,21 @@
431422
CLANG_CXX_LIBRARY = "libc++";
432423
CLANG_ENABLE_MODULES = YES;
433424
CLANG_ENABLE_OBJC_ARC = YES;
425+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
434426
CLANG_WARN_BOOL_CONVERSION = YES;
427+
CLANG_WARN_COMMA = YES;
435428
CLANG_WARN_CONSTANT_CONVERSION = YES;
436429
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
437430
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
438431
CLANG_WARN_EMPTY_BODY = YES;
439432
CLANG_WARN_ENUM_CONVERSION = YES;
440433
CLANG_WARN_INFINITE_RECURSION = YES;
441434
CLANG_WARN_INT_CONVERSION = YES;
435+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
436+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
442437
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
438+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
439+
CLANG_WARN_STRICT_PROTOTYPES = YES;
443440
CLANG_WARN_SUSPICIOUS_MOVE = YES;
444441
CLANG_WARN_UNREACHABLE_CODE = YES;
445442
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -484,15 +481,21 @@
484481
CLANG_CXX_LIBRARY = "libc++";
485482
CLANG_ENABLE_MODULES = YES;
486483
CLANG_ENABLE_OBJC_ARC = YES;
484+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
487485
CLANG_WARN_BOOL_CONVERSION = YES;
486+
CLANG_WARN_COMMA = YES;
488487
CLANG_WARN_CONSTANT_CONVERSION = YES;
489488
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
490489
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
491490
CLANG_WARN_EMPTY_BODY = YES;
492491
CLANG_WARN_ENUM_CONVERSION = YES;
493492
CLANG_WARN_INFINITE_RECURSION = YES;
494493
CLANG_WARN_INT_CONVERSION = YES;
494+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
495+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
495496
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
497+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
498+
CLANG_WARN_STRICT_PROTOTYPES = YES;
496499
CLANG_WARN_SUSPICIOUS_MOVE = YES;
497500
CLANG_WARN_UNREACHABLE_CODE = YES;
498501
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -544,7 +547,8 @@
544547
PRODUCT_NAME = "$(TARGET_NAME)";
545548
SKIP_INSTALL = YES;
546549
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
547-
SWIFT_VERSION = 3.0;
550+
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
551+
SWIFT_VERSION = 4.0;
548552
};
549553
name = Debug;
550554
};
@@ -571,7 +575,8 @@
571575
PRODUCT_BUNDLE_IDENTIFIER = org.teeps.BuckoNetworking;
572576
PRODUCT_NAME = "$(TARGET_NAME)";
573577
SKIP_INSTALL = YES;
574-
SWIFT_VERSION = 3.0;
578+
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
579+
SWIFT_VERSION = 4.0;
575580
};
576581
name = Release;
577582
};
@@ -584,7 +589,8 @@
584589
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
585590
PRODUCT_BUNDLE_IDENTIFIER = org.teeps.BuckoNetworkingTests;
586591
PRODUCT_NAME = "$(TARGET_NAME)";
587-
SWIFT_VERSION = 3.0;
592+
SWIFT_SWIFT3_OBJC_INFERENCE = On;
593+
SWIFT_VERSION = 4.0;
588594
};
589595
name = Debug;
590596
};
@@ -597,7 +603,8 @@
597603
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
598604
PRODUCT_BUNDLE_IDENTIFIER = org.teeps.BuckoNetworkingTests;
599605
PRODUCT_NAME = "$(TARGET_NAME)";
600-
SWIFT_VERSION = 3.0;
606+
SWIFT_SWIFT3_OBJC_INFERENCE = On;
607+
SWIFT_VERSION = 4.0;
601608
};
602609
name = Release;
603610
};
@@ -627,7 +634,7 @@
627634
PRODUCT_NAME = BuckoNetworking;
628635
SDKROOT = macosx;
629636
SKIP_INSTALL = YES;
630-
SWIFT_VERSION = 3.0;
637+
SWIFT_VERSION = 4.0;
631638
};
632639
name = Debug;
633640
};
@@ -657,7 +664,7 @@
657664
PRODUCT_NAME = BuckoNetworking;
658665
SDKROOT = macosx;
659666
SKIP_INSTALL = YES;
660-
SWIFT_VERSION = 3.0;
667+
SWIFT_VERSION = 4.0;
661668
};
662669
name = Release;
663670
};

BuckoNetworking.xcodeproj/xcshareddata/xcschemes/BuckoNetworking macOS.xcscheme

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0830"
3+
LastUpgradeVersion = "0920"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"
@@ -15,7 +15,7 @@
1515
<BuildableReference
1616
BuildableIdentifier = "primary"
1717
BlueprintIdentifier = "6ABB44E11EF8644F00E344AF"
18-
BuildableName = "BuckoNetworking macOS.framework"
18+
BuildableName = "BuckoNetworking.framework"
1919
BlueprintName = "BuckoNetworking macOS"
2020
ReferencedContainer = "container:BuckoNetworking.xcodeproj">
2121
</BuildableReference>
@@ -26,6 +26,7 @@
2626
buildConfiguration = "Debug"
2727
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
2828
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
language = ""
2930
shouldUseLaunchSchemeArgsEnv = "YES">
3031
<Testables>
3132
<TestableReference
@@ -43,7 +44,7 @@
4344
<BuildableReference
4445
BuildableIdentifier = "primary"
4546
BlueprintIdentifier = "6ABB44E11EF8644F00E344AF"
46-
BuildableName = "BuckoNetworking macOS.framework"
47+
BuildableName = "BuckoNetworking.framework"
4748
BlueprintName = "BuckoNetworking macOS"
4849
ReferencedContainer = "container:BuckoNetworking.xcodeproj">
4950
</BuildableReference>
@@ -55,6 +56,7 @@
5556
buildConfiguration = "Debug"
5657
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
5758
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
59+
language = ""
5860
launchStyle = "0"
5961
useCustomWorkingDirectory = "NO"
6062
ignoresPersistentStateOnLaunch = "NO"
@@ -65,7 +67,7 @@
6567
<BuildableReference
6668
BuildableIdentifier = "primary"
6769
BlueprintIdentifier = "6ABB44E11EF8644F00E344AF"
68-
BuildableName = "BuckoNetworking macOS.framework"
70+
BuildableName = "BuckoNetworking.framework"
6971
BlueprintName = "BuckoNetworking macOS"
7072
ReferencedContainer = "container:BuckoNetworking.xcodeproj">
7173
</BuildableReference>
@@ -83,7 +85,7 @@
8385
<BuildableReference
8486
BuildableIdentifier = "primary"
8587
BlueprintIdentifier = "6ABB44E11EF8644F00E344AF"
86-
BuildableName = "BuckoNetworking macOS.framework"
88+
BuildableName = "BuckoNetworking.framework"
8789
BlueprintName = "BuckoNetworking macOS"
8890
ReferencedContainer = "container:BuckoNetworking.xcodeproj">
8991
</BuildableReference>

BuckoNetworking.xcodeproj/xcshareddata/xcschemes/BuckoNetworking.xcscheme

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0820"
3+
LastUpgradeVersion = "0920"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"
@@ -26,6 +26,7 @@
2626
buildConfiguration = "Debug"
2727
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
2828
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
language = ""
2930
shouldUseLaunchSchemeArgsEnv = "YES">
3031
<Testables>
3132
<TestableReference
@@ -55,6 +56,7 @@
5556
buildConfiguration = "Debug"
5657
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
5758
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
59+
language = ""
5860
launchStyle = "0"
5961
useCustomWorkingDirectory = "NO"
6062
ignoresPersistentStateOnLaunch = "NO"

BuckoNetworking/Bucko.swift

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88

99
import Foundation
1010
import Alamofire
11-
import SwiftyJSON
1211

1312
public protocol BuckoErrorHandler: class {
1413
func buckoRequest(request: URLRequest, error: Error)
1514
}
1615

1716
public typealias BuckoResponseClosure = ((DataResponse<Any>) -> Void)
17+
public typealias BuckoDataResponseClosure = ((DataResponse<Data>) -> Void)
1818
@available(*, deprecated, message: "Use HTTPMethod instead")
1919
public typealias HttpMethod = HTTPMethod
2020
@available(*, deprecated, message: "Use HTTPHeaders instead")
@@ -27,8 +27,6 @@ public typealias UrlEncoding = URLEncoding
2727
public typealias JsonEncoding = JSONEncoding
2828
@available(*, deprecated, message: "Use Parameters instead")
2929
public typealias Body = Parameters
30-
@available(*, deprecated, message: "Use JSON instead")
31-
public typealias Json = JSON
3230

3331
public struct Bucko {
3432
/**
@@ -124,7 +122,6 @@ public struct Bucko {
124122
debugPrint(response.result.description)
125123
} else {
126124
debugPrint(response.result.error ?? "Error")
127-
debugPrint(response.serverError ?? "Error")
128125
// Can globably handle errors here if you want
129126
if let urlRequest = response.request, let error = response.result.error {
130127
self.delegate?.buckoRequest(request: urlRequest, error: error)
@@ -137,11 +134,25 @@ public struct Bucko {
137134
print(request.description)
138135
return request
139136
}
140-
}
141-
142-
extension DataResponse {
143-
public var serverError: JSON? {
144-
guard let data = self.data else { return nil }
145-
return JSON(data: data)
137+
138+
@discardableResult
139+
public func requestData(endpoint: Endpoint, completion: @escaping BuckoDataResponseClosure) -> DataRequest {
140+
let request = self.request(endpoint: endpoint).validate().responseData { response in
141+
142+
if response.result.isSuccess {
143+
debugPrint(response.result.description)
144+
} else {
145+
debugPrint(response.result.error ?? "Error")
146+
// Can globably handle errors here if you want
147+
if let urlRequest = response.request, let error = response.result.error {
148+
self.delegate?.buckoRequest(request: urlRequest, error: error)
149+
}
150+
}
151+
152+
completion(response)
153+
}
154+
155+
print(request.description)
156+
return request
146157
}
147158
}

BuckoNetworking/BuckoNetworking.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
@import Foundation;
1010
@import Alamofire;
11-
@import SwiftyJSON;
1211

1312
//! Project version number for BuckoNetworking.
1413
FOUNDATION_EXPORT double BuckoNetworkingVersionNumber;

BuckoNetworking/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<key>CFBundlePackageType</key>
1616
<string>FMWK</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>1.1.3</string>
18+
<string>2.0.0</string>
1919
<key>CFBundleVersion</key>
2020
<string>$(CURRENT_PROJECT_VERSION)</string>
2121
<key>NSPrincipalClass</key>

0 commit comments

Comments
 (0)