Skip to content

Commit ec6a50a

Browse files
author
César Pinto Castillo
authored
Adds support for macOS
Also makes it possible to specify which cloud kit container you want to use.
1 parent 0e5e810 commit ec6a50a

14 files changed

Lines changed: 500 additions & 147 deletions

.travis.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ language: objective-c
22
osx_image: xcode8.1
33
xcode_sdk: 9.0
44
xcode_project: CloudKitCurrentUser.xcodeproj
5-
xcode_scheme: CloudKitCurrentUser
65
script:
7-
- fastlane test
6+
- fastlane scan --scheme "CloudKitCurrentUser iOS" --sdk iphonesimulator10.1
7+
- fastlane scan --scheme "CloudKitCurrentUser macOS" --sdk macosx10.12
8+

CloudKitCurrentUser.xcodeproj/project.pbxproj

Lines changed: 339 additions & 114 deletions
Large diffs are not rendered by default.

CloudKitCurrentUser.xcodeproj/xcshareddata/xcschemes/CloudKitCurrentUser.xcscheme renamed to CloudKitCurrentUser.xcodeproj/xcshareddata/xcschemes/CloudKitCurrentUser iOS.xcscheme

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
BuildableIdentifier = "primary"
1717
BlueprintIdentifier = "FC1D26A51DF21BAD005049CA"
1818
BuildableName = "CloudKitCurrentUser.framework"
19-
BlueprintName = "CloudKitCurrentUser"
19+
BlueprintName = "CloudKitCurrentUser iOS"
2020
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
2121
</BuildableReference>
2222
</BuildActionEntry>
@@ -32,9 +32,9 @@
3232
skipped = "NO">
3333
<BuildableReference
3434
BuildableIdentifier = "primary"
35-
BlueprintIdentifier = "FC1D26AE1DF21BAD005049CA"
36-
BuildableName = "CloudKitCurrentUserTests.xctest"
37-
BlueprintName = "CloudKitCurrentUserTests"
35+
BlueprintIdentifier = "FC1B22A71EA56A8400A17879"
36+
BuildableName = "CloudKitCurrentUser iOS Tests.xctest"
37+
BlueprintName = "CloudKitCurrentUser iOS Tests"
3838
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
3939
</BuildableReference>
4040
</TestableReference>
@@ -44,7 +44,7 @@
4444
BuildableIdentifier = "primary"
4545
BlueprintIdentifier = "FC1D26A51DF21BAD005049CA"
4646
BuildableName = "CloudKitCurrentUser.framework"
47-
BlueprintName = "CloudKitCurrentUser"
47+
BlueprintName = "CloudKitCurrentUser iOS"
4848
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
4949
</BuildableReference>
5050
</MacroExpansion>
@@ -66,7 +66,7 @@
6666
BuildableIdentifier = "primary"
6767
BlueprintIdentifier = "FC1D26A51DF21BAD005049CA"
6868
BuildableName = "CloudKitCurrentUser.framework"
69-
BlueprintName = "CloudKitCurrentUser"
69+
BlueprintName = "CloudKitCurrentUser iOS"
7070
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
7171
</BuildableReference>
7272
</MacroExpansion>
@@ -84,7 +84,7 @@
8484
BuildableIdentifier = "primary"
8585
BlueprintIdentifier = "FC1D26A51DF21BAD005049CA"
8686
BuildableName = "CloudKitCurrentUser.framework"
87-
BlueprintName = "CloudKitCurrentUser"
87+
BlueprintName = "CloudKitCurrentUser iOS"
8888
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
8989
</BuildableReference>
9090
</MacroExpansion>
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "0820"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "FC1B228B1EA5658700A17879"
18+
BuildableName = "CloudKitCurrentUser.framework"
19+
BlueprintName = "CloudKitCurrentUser macOS"
20+
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
<TestableReference
32+
skipped = "NO">
33+
<BuildableReference
34+
BuildableIdentifier = "primary"
35+
BlueprintIdentifier = "FC1B22B61EA56AA900A17879"
36+
BuildableName = "CloudKitCurrentUser macOS Tests.xctest"
37+
BlueprintName = "CloudKitCurrentUser macOS Tests"
38+
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
39+
</BuildableReference>
40+
</TestableReference>
41+
</Testables>
42+
<MacroExpansion>
43+
<BuildableReference
44+
BuildableIdentifier = "primary"
45+
BlueprintIdentifier = "FC1B228B1EA5658700A17879"
46+
BuildableName = "CloudKitCurrentUser.framework"
47+
BlueprintName = "CloudKitCurrentUser macOS"
48+
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
49+
</BuildableReference>
50+
</MacroExpansion>
51+
<AdditionalOptions>
52+
</AdditionalOptions>
53+
</TestAction>
54+
<LaunchAction
55+
buildConfiguration = "Debug"
56+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
57+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
58+
launchStyle = "0"
59+
useCustomWorkingDirectory = "NO"
60+
ignoresPersistentStateOnLaunch = "NO"
61+
debugDocumentVersioning = "YES"
62+
debugServiceExtension = "internal"
63+
allowLocationSimulation = "YES">
64+
<MacroExpansion>
65+
<BuildableReference
66+
BuildableIdentifier = "primary"
67+
BlueprintIdentifier = "FC1B228B1EA5658700A17879"
68+
BuildableName = "CloudKitCurrentUser.framework"
69+
BlueprintName = "CloudKitCurrentUser macOS"
70+
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
71+
</BuildableReference>
72+
</MacroExpansion>
73+
<AdditionalOptions>
74+
</AdditionalOptions>
75+
</LaunchAction>
76+
<ProfileAction
77+
buildConfiguration = "Release"
78+
shouldUseLaunchSchemeArgsEnv = "YES"
79+
savedToolIdentifier = ""
80+
useCustomWorkingDirectory = "NO"
81+
debugDocumentVersioning = "YES">
82+
<MacroExpansion>
83+
<BuildableReference
84+
BuildableIdentifier = "primary"
85+
BlueprintIdentifier = "FC1B228B1EA5658700A17879"
86+
BuildableName = "CloudKitCurrentUser.framework"
87+
BlueprintName = "CloudKitCurrentUser macOS"
88+
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
89+
</BuildableReference>
90+
</MacroExpansion>
91+
</ProfileAction>
92+
<AnalyzeAction
93+
buildConfiguration = "Debug">
94+
</AnalyzeAction>
95+
<ArchiveAction
96+
buildConfiguration = "Release"
97+
revealArchiveInOrganizer = "YES">
98+
</ArchiveAction>
99+
</Scheme>

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![Build Status](https://travis-ci.org/JagCesar/CloudKitCurrentUser.svg?branch=master)](https://travis-ci.org/JagCesar/CloudKitCurrentUser)
44
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
5-
[![CloudKitCurrentUser](https://img.shields.io/badge/platform-iOS-lightgrey.svg?style=flat)](https://github.com/JagCesar/CloudKitCurrentUser)
5+
[![CloudKitCurrentUser](https://img.shields.io/badge/platform-iOS%20%7C%20macOS-lightgrey.svg?style=flat)](https://github.com/JagCesar/CloudKitCurrentUser)
66
[![License](https://img.shields.io/badge/license-MIT-AA8DF8.svg?style=flat)](https://github.com/JagCesar/CloudKitCurrentUser/blob/master/LICENSE)
77
[![Language](https://img.shields.io/badge/language-Swift%203-E05C43.svg?style=flat)](https://swift.org)
88
[![Twitter](https://img.shields.io/badge/twitter-@JagCesar-00ACED.svg?style=flat)](http://twitter.com/JagCesar)
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
//
2-
// CloudKitCurrentUser.h
3-
// CloudKitCurrentUser
4-
//
5-
// Created by Cesar Pinto Castillo on 2016-12-02.
6-
// Copyright © 2016 JagCesar. All rights reserved.
7-
//
8-
9-
#import <UIKit/UIKit.h>
1+
#import <Foundation/Foundation.h>
102

113
//! Project version number for CloudKitCurrentUser.
124
FOUNDATION_EXPORT double CloudKitCurrentUserVersionNumber;
@@ -15,5 +7,3 @@ FOUNDATION_EXPORT double CloudKitCurrentUserVersionNumber;
157
FOUNDATION_EXPORT const unsigned char CloudKitCurrentUserVersionString[];
168

179
// In this header, you should import all the public headers of your framework using statements like #import <CloudKitCurrentUser/PublicHeader.h>
18-
19-

CloudKitCurrentUser/CloudKitCurrentUserRequest.swift renamed to Sources/CloudKitCurrentUserRequest.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
import CloudKit
1010

1111
internal class CloudKitCurrentUserRequest: CurrentUserRequestProtocol {
12+
var cloudKitContainerIdentifier: String?
13+
1214
func currentStatus(completionBlock: @escaping StatusCompletionBlock) {
13-
CKContainer.default().accountStatus { accountStatus, error in
15+
currentContainer().accountStatus { accountStatus, error in
1416
switch accountStatus {
1517
case .couldNotDetermine:
1618
completionBlock(.NotDetermined, error)
@@ -25,12 +27,20 @@ internal class CloudKitCurrentUserRequest: CurrentUserRequestProtocol {
2527
}
2628

2729
func userIdentifier(completionBlock: @escaping UserIdentifierCompletionBlock) {
28-
CKContainer.default().fetchUserRecordID { recordID, error in
30+
currentContainer().fetchUserRecordID { recordID, error in
2931
completionBlock(recordID?.recordName, error)
3032
}
3133
}
3234

3335
func statusChangedNotification() -> NSNotification.Name {
3436
return NSNotification.Name.CKAccountChanged
3537
}
38+
39+
private func currentContainer() -> CKContainer {
40+
if let cloudKitContainerIdentifier = cloudKitContainerIdentifier {
41+
return CKContainer(identifier: cloudKitContainerIdentifier)
42+
} else {
43+
return CKContainer.default()
44+
}
45+
}
3646
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ public class CurrentUser {
2020
private var isLoadingUserIdentifier: Bool = false
2121
private var userIdentifierCompletionBlocks: [UserIdentifierCompletionBlock] = []
2222
var userRequestObject: CurrentUserRequestProtocol = CloudKitCurrentUserRequest()
23+
public var cloudKitContainerIdentifier: String? {
24+
didSet {
25+
userRequestObject.cloudKitContainerIdentifier = cloudKitContainerIdentifier
26+
}
27+
}
2328

2429
private init() {
2530
NotificationCenter.default.addObserver(self,

CloudKitCurrentUser/CurrentUserRequestProtocol.swift renamed to Sources/CurrentUserRequestProtocol.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ public typealias StatusCompletionBlock = (_ status: CurrentUserStatus, _ error:
1919
public typealias UserIdentifierCompletionBlock = (_ userIdentifier: String?, _ error: Error?) -> Swift.Void
2020

2121
internal protocol CurrentUserRequestProtocol: class {
22+
var cloudKitContainerIdentifier: String? { get set }
23+
2224
func currentStatus(completionBlock: @escaping StatusCompletionBlock)
2325
func userIdentifier(completionBlock: @escaping UserIdentifierCompletionBlock)
24-
2526
func statusChangedNotification() -> NSNotification.Name
2627
}

0 commit comments

Comments
 (0)