From 656068b14aa2a7474f48c400db95a327f5a35dc6 Mon Sep 17 00:00:00 2001 From: Robert Walsh Date: Sun, 12 Feb 2017 18:18:23 -0600 Subject: [PATCH 1/8] Update to new API url. --- Source/UsergridClient.swift | 5 +++-- Source/UsergridClientConfig.swift | 4 ++-- Source/UsergridEnums.swift | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Source/UsergridClient.swift b/Source/UsergridClient.swift index 7cb3a14..0579cec 100644 --- a/Source/UsergridClient.swift +++ b/Source/UsergridClient.swift @@ -32,7 +32,7 @@ The `UsergridClient` class is the base handler for making client connections to */ public class UsergridClient: NSObject, NSCoding { - static let DEFAULT_BASE_URL = "https://api.usergrid.com" + static let DEFAULT_BASE_URL = "https://apibaas-trial.apigee.net" // MARK: - Instance Properties - @@ -521,7 +521,8 @@ public class UsergridClient: NSObject, NSCoding { - parameter completion: The optional completion block that will be called once the request has completed. */ public func PUT(_ type: String, jsonBody:[String:Any], completion: UsergridResponseCompletion? = nil) { - guard let uuidOrName = (jsonBody[UsergridEntityProperties.uuid.stringValue] ?? jsonBody[UsergridEntityProperties.name.stringValue]) as? String + guard let uuidOrName = jsonBody[UsergridEntityProperties.uuid.stringValue] as? String + ?? jsonBody[UsergridEntityProperties.name.stringValue] as? String else { completion?(UsergridResponse(client:self, errorName: "jsonBody not valid.", errorDescription: "The `jsonBody` must contain a valid value for either `uuid` or `name`.")) return diff --git a/Source/UsergridClientConfig.swift b/Source/UsergridClientConfig.swift index 9d1e057..b28631f 100644 --- a/Source/UsergridClientConfig.swift +++ b/Source/UsergridClientConfig.swift @@ -45,7 +45,7 @@ public class UsergridClientConfig : NSObject, NSCoding { public var baseUrl: String = UsergridClient.DEFAULT_BASE_URL /// The `UsergridAuthMode` value used to determine what type of token will be sent, if any. - public var authMode: UsergridAuthMode = .user + public var authMode: UsergridAuthMode = UsergridAuthMode.defaultMode /// Whether or not the `UsergridClient` current user will be saved and restored from the keychain. public var persistCurrentUserInKeychain: Bool = true @@ -129,7 +129,7 @@ public class UsergridClientConfig : NSObject, NSCoding { self.baseUrl = baseUrl self.appAuth = aDecoder.decodeObject(forKey: "appAuth") as? UsergridAppAuth self.persistCurrentUserInKeychain = aDecoder.decodeBool(forKey: "persistCurrentUserInKeychain") - self.authMode = (UsergridAuthMode(rawValue:aDecoder.decodeInteger(forKey: "authMode")) ?? .none)! + self.authMode = UsergridAuthMode(rawValue:aDecoder.decodeInteger(forKey: "authMode")) ?? UsergridAuthMode.defaultMode super.init() } diff --git a/Source/UsergridEnums.swift b/Source/UsergridEnums.swift index 2b32aa1..cd9a3cd 100644 --- a/Source/UsergridEnums.swift +++ b/Source/UsergridEnums.swift @@ -31,6 +31,8 @@ An enumeration that is used to determine what the `UsergridClient` will use for */ @objc public enum UsergridAuthMode : Int { + static let defaultMode: UsergridAuthMode = .user + // MARK: - Values - /** From f028b010effba8740cef097158a4609f5b2d4ebb Mon Sep 17 00:00:00 2001 From: Robert Walsh Date: Sun, 12 Feb 2017 19:22:20 -0600 Subject: [PATCH 2/8] Fixing podspec --- UsergridSDK.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UsergridSDK.podspec b/UsergridSDK.podspec index 4d13736..c25debc 100644 --- a/UsergridSDK.podspec +++ b/UsergridSDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'UsergridSDK' - s.version = ‘2.1.3’ + s.version = '2.1.3' s.summary = 'Usergrid SDK written in Swift' s.homepage = 'https://github.com/apache/usergrid-swift' s.license = 'Apache 2.0' From fa62b257195cd79597f76fea526b23d01e109b29 Mon Sep 17 00:00:00 2001 From: Robert Walsh Date: Sun, 12 Feb 2017 22:58:57 -0600 Subject: [PATCH 3/8] Fix documentation and update to docs folder. --- Source/UsergridAsset.swift | 2 +- Source/UsergridClient.swift | 8 +- Source/UsergridClientConfig.swift | 6 +- Source/UsergridDevice.swift | 2 +- Source/UsergridEntity.swift | 2 +- Source/UsergridEnums.swift | 2 - Source/UsergridFileMetaData.swift | 2 +- docs/Classes.html | 25 +- docs/Classes/Usergrid.html | 273 +++++------ docs/Classes/UsergridAppAuth.html | 29 +- docs/Classes/UsergridAsset.html | 59 +-- docs/Classes/UsergridAssetUploadRequest.html | 29 +- docs/Classes/UsergridAuth.html | 47 +- docs/Classes/UsergridClient.html | 354 ++++++++------ docs/Classes/UsergridClientConfig.html | 43 +- docs/Classes/UsergridDevice.html | 85 ++-- docs/Classes/UsergridEntity.html | 289 +++++------ docs/Classes/UsergridFileMetaData.html | 41 +- docs/Classes/UsergridQuery.html | 137 +++--- docs/Classes/UsergridRequest.html | 47 +- docs/Classes/UsergridResponse.html | 63 +-- docs/Classes/UsergridResponseError.html | 31 +- docs/Classes/UsergridUser.html | 237 ++++----- docs/Classes/UsergridUserAuth.html | 29 +- docs/Enums.html | 13 +- docs/Enums/UsergridAuthMode.html | 37 +- docs/Enums/UsergridDeviceProperties.html | 43 +- docs/Enums/UsergridDirection.html | 29 +- docs/Enums/UsergridEntityProperties.html | 73 +-- docs/Enums/UsergridHttpMethod.html | 45 +- docs/Enums/UsergridImageContentType.html | 29 +- docs/Enums/UsergridQueryOperator.html | 59 +-- docs/Enums/UsergridQuerySortOrder.html | 35 +- docs/Enums/UsergridUserProperties.html | 83 ++-- docs/Extensions.html | 52 +- docs/Extensions/Date.html | 456 ++++++++++++++++++ docs/Extensions/UsergridSessionDelegate.html | 225 +++++++++ docs/Global Variables.html | 15 +- docs/Typealiases.html | 45 +- docs/css/jazzy.css | 3 +- .../UsergridSDK.docset/Contents/Info.plist | 2 +- .../Contents/Resources/Documents/Classes.html | 31 +- .../Resources/Documents/Classes/Usergrid.html | 395 +++++++++------ .../Documents/Classes/UsergridAppAuth.html | 43 +- .../Documents/Classes/UsergridAsset.html | 77 +-- .../Classes/UsergridAssetUploadRequest.html | 39 +- .../Documents/Classes/UsergridAuth.html | 61 ++- .../Documents/Classes/UsergridClient.html | 453 +++++++++++------ .../Classes/UsergridClientConfig.html | 79 +-- .../Documents/Classes/UsergridDevice.html | 248 +++++++--- .../Documents/Classes/UsergridEntity.html | 376 +++++++++------ .../Classes/UsergridFileMetaData.html | 49 +- .../Documents/Classes/UsergridQuery.html | 227 ++++----- .../Documents/Classes/UsergridRequest.html | 61 ++- .../Documents/Classes/UsergridResponse.html | 83 ++-- .../Classes/UsergridResponseError.html | 41 +- .../Documents/Classes/UsergridUser.html | 366 +++++++++----- .../Documents/Classes/UsergridUserAuth.html | 43 +- .../Contents/Resources/Documents/Enums.html | 31 +- .../Documents/Enums/UsergridAuthMode.html | 286 +++++++++++ .../Enums/UsergridDeviceProperties.html | 53 +- .../Documents/Enums/UsergridDirection.html | 35 +- .../Enums/UsergridEntityProperties.html | 87 ++-- .../Documents/Enums/UsergridHttpMethod.html | 51 +- .../Enums/UsergridImageContentType.html | 35 +- .../Enums/UsergridQueryOperator.html | 69 +-- .../Enums/UsergridQuerySortOrder.html | 45 +- .../Enums/UsergridUserProperties.html | 93 ++-- .../Resources/Documents/Extensions.html | 96 +++- .../Resources/Documents/Extensions/Date.html | 456 ++++++++++++++++++ .../Documents/Extensions/NSDate.html | 448 +++++++++++++++++ .../Extensions/UsergridSessionDelegate.html | 225 +++++++++ .../Resources/Documents/Global Variables.html | 21 +- .../Resources/Documents/Typealiases.html | 35 +- .../Resources/Documents/css/jazzy.css | 3 +- .../Contents/Resources/Documents/index.html | 112 +++-- .../Resources/Documents/undocumented.json | 26 + .../Contents/Resources/docSet.dsidx | Bin 151552 -> 143360 bytes docs/docsets/UsergridSDK.tgz | Bin 145485 -> 149978 bytes docs/index.html | 110 +++-- docs/undocumented.json | 26 + 81 files changed, 5672 insertions(+), 2429 deletions(-) create mode 100644 docs/Extensions/Date.html create mode 100644 docs/Extensions/UsergridSessionDelegate.html create mode 100644 docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridAuthMode.html create mode 100644 docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions/Date.html create mode 100644 docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions/NSDate.html create mode 100644 docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions/UsergridSessionDelegate.html create mode 100644 docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/undocumented.json create mode 100644 docs/undocumented.json diff --git a/Source/UsergridAsset.swift b/Source/UsergridAsset.swift index 93c88c7..f55ceba 100644 --- a/Source/UsergridAsset.swift +++ b/Source/UsergridAsset.swift @@ -148,7 +148,7 @@ public class UsergridAsset: NSObject, NSCoding { - parameter aDecoder: The decoder. - - returns: A decoded `UsergridUser` object. + - returns: A decoded `UsergridAsset` object. */ required public init?(coder aDecoder: NSCoder) { guard let filename = aDecoder.decodeObject(forKey: "filename") as? String, diff --git a/Source/UsergridClient.swift b/Source/UsergridClient.swift index 0579cec..a6c3243 100644 --- a/Source/UsergridClient.swift +++ b/Source/UsergridClient.swift @@ -32,7 +32,13 @@ The `UsergridClient` class is the base handler for making client connections to */ public class UsergridClient: NSObject, NSCoding { - static let DEFAULT_BASE_URL = "https://apibaas-trial.apigee.net" + // MARK: - Static Variables - + + /// The default base URL for all calls made by the UsergridClient instances. + public static let DEFAULT_BASE_URL = "https://apibaas-trial.apigee.net" + + /// The default auth mode used when creating UsergridClient instances. + public static let DEFAULT_AUTH_MODE: UsergridAuthMode = .user // MARK: - Instance Properties - diff --git a/Source/UsergridClientConfig.swift b/Source/UsergridClientConfig.swift index b28631f..7f10f3b 100644 --- a/Source/UsergridClientConfig.swift +++ b/Source/UsergridClientConfig.swift @@ -45,7 +45,7 @@ public class UsergridClientConfig : NSObject, NSCoding { public var baseUrl: String = UsergridClient.DEFAULT_BASE_URL /// The `UsergridAuthMode` value used to determine what type of token will be sent, if any. - public var authMode: UsergridAuthMode = UsergridAuthMode.defaultMode + public var authMode: UsergridAuthMode = UsergridClient.DEFAULT_AUTH_MODE /// Whether or not the `UsergridClient` current user will be saved and restored from the keychain. public var persistCurrentUserInKeychain: Bool = true @@ -112,7 +112,7 @@ public class UsergridClientConfig : NSObject, NSCoding { - parameter aDecoder: The decoder. - - returns: A decoded `UsergridUser` object. + - returns: A decoded `UsergridClientConfig` object. */ public required init?(coder aDecoder: NSCoder) { guard let appId = aDecoder.decodeObject(forKey: "appId") as? String, @@ -129,7 +129,7 @@ public class UsergridClientConfig : NSObject, NSCoding { self.baseUrl = baseUrl self.appAuth = aDecoder.decodeObject(forKey: "appAuth") as? UsergridAppAuth self.persistCurrentUserInKeychain = aDecoder.decodeBool(forKey: "persistCurrentUserInKeychain") - self.authMode = UsergridAuthMode(rawValue:aDecoder.decodeInteger(forKey: "authMode")) ?? UsergridAuthMode.defaultMode + self.authMode = UsergridAuthMode(rawValue:aDecoder.decodeInteger(forKey: "authMode")) ?? UsergridClient.DEFAULT_AUTH_MODE super.init() } diff --git a/Source/UsergridDevice.swift b/Source/UsergridDevice.swift index 5eb3850..0da685a 100644 --- a/Source/UsergridDevice.swift +++ b/Source/UsergridDevice.swift @@ -91,7 +91,7 @@ public class UsergridDevice : UsergridEntity { - parameter aDecoder: The decoder. - - returns: A decoded `UsergridUser` object. + - returns: A decoded `UsergridDevice` object. */ required public init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) diff --git a/Source/UsergridEntity.swift b/Source/UsergridEntity.swift index 7babee4..f4de222 100644 --- a/Source/UsergridEntity.swift +++ b/Source/UsergridEntity.swift @@ -188,7 +188,7 @@ open class UsergridEntity: NSObject, NSCoding { - parameter aDecoder: The decoder. - - returns: A decoded `UsergridUser` object. + - returns: A decoded `UsergridEntity` object. */ required public init?(coder aDecoder: NSCoder) { guard let properties = aDecoder.decodeObject(forKey: "properties") as? [String:Any] diff --git a/Source/UsergridEnums.swift b/Source/UsergridEnums.swift index cd9a3cd..2b32aa1 100644 --- a/Source/UsergridEnums.swift +++ b/Source/UsergridEnums.swift @@ -31,8 +31,6 @@ An enumeration that is used to determine what the `UsergridClient` will use for */ @objc public enum UsergridAuthMode : Int { - static let defaultMode: UsergridAuthMode = .user - // MARK: - Values - /** diff --git a/Source/UsergridFileMetaData.swift b/Source/UsergridFileMetaData.swift index b150e2e..8254c07 100644 --- a/Source/UsergridFileMetaData.swift +++ b/Source/UsergridFileMetaData.swift @@ -83,7 +83,7 @@ public class UsergridFileMetaData : NSObject,NSCoding { - parameter aDecoder: The decoder. - - returns: A decoded `UsergridUser` object. + - returns: A decoded `UsergridFileMetaData` object. */ required public init?(coder aDecoder: NSCoder) { self.eTag = aDecoder.decodeObject(forKey: "etag") as? String diff --git a/docs/Classes.html b/docs/Classes.html index c6b6e22..9715914 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -13,12 +13,12 @@
-

Docs (100% documented)

+

UsergridSDK Docs

@@ -123,7 +123,10 @@ Extensions @@ -251,7 +254,7 @@

Declaration

Declaration

Swift

-
public class UsergridAssetUploadRequest: UsergridRequest
+
public class UsergridAssetUploadRequest: UsergridRequest
@@ -347,7 +350,7 @@

Declaration

Declaration

Swift

-
public class UsergridUserAuth : UsergridAuth
+
public class UsergridUserAuth : UsergridAuth
@@ -375,7 +378,7 @@

Declaration

Declaration

Swift

-
public class UsergridAppAuth : UsergridAuth
+
public class UsergridAppAuth : UsergridAuth
@@ -441,7 +444,7 @@

Declaration

Declaration

Swift

-
public class UsergridDevice : UsergridEntity
+
public class UsergridDevice : UsergridEntity
@@ -509,7 +512,7 @@

Declaration

Declaration

Swift

-
public class UsergridEntity: NSObject, NSCoding
+
open class UsergridEntity: NSObject, NSCoding
@@ -541,7 +544,7 @@

Declaration

Declaration

Swift

-
public class UsergridUser : UsergridEntity
+
public class UsergridUser : UsergridEntity
@@ -692,8 +695,8 @@

Declaration

diff --git a/docs/Classes/Usergrid.html b/docs/Classes/Usergrid.html index 61bf26f..480fddf 100644 --- a/docs/Classes/Usergrid.html +++ b/docs/Classes/Usergrid.html @@ -14,12 +14,12 @@
-

Docs (100% documented)

+

UsergridSDK Docs

@@ -124,7 +124,10 @@ Extensions @@ -207,7 +210,7 @@

Static Variables

Declaration

Swift

-
public static var isInitialized : Bool  { return Usergrid._sharedClient != nil }
+
public static var isInitialized : Bool
@@ -227,12 +230,12 @@

Declaration

-

A shared instance of UsergridClient, used by the Usergrid static methods and acts as the default UsergridClient +

A shared instance of UsergridClient, used by the Usergrid static methods and acts as the default UsergridClient within the UsergridSDK library.

Warning

- You must call one of the Usergrid.initSharedInstance methods before this or any other Usergrid static methods are valid. + You must call one of the Usergrid.initSharedInstance methods before this or any other Usergrid static methods are valid.
@@ -241,7 +244,7 @@

Declaration

Declaration

Swift

-
public static var sharedInstance : UsergridClient
+
public static var sharedInstance : UsergridClient
@@ -268,7 +271,7 @@

Declaration

Declaration

Swift

-
public static var appId : String { return Usergrid.sharedInstance.appId }
+
public static var appId : String
@@ -295,7 +298,7 @@

Declaration

Declaration

Swift

-
public static var orgId : String { return Usergrid.sharedInstance.orgId }
+
public static var orgId : String
@@ -322,7 +325,7 @@

Declaration

Declaration

Swift

-
public static var baseUrl : String { return Usergrid.sharedInstance.baseUrl }
+
public static var baseUrl : String
@@ -349,7 +352,7 @@

Declaration

Declaration

Swift

-
public static var clientAppURL : String { return Usergrid.sharedInstance.clientAppURL }
+
public static var clientAppURL : String
@@ -376,7 +379,7 @@

Declaration

Declaration

Swift

-
public static var currentUser: UsergridUser?  { return Usergrid.sharedInstance.currentUser }
+
public static var currentUser: UsergridUser?
@@ -430,7 +433,7 @@

Declaration

Declaration

Swift

-
public static var userAuth: UsergridUserAuth?  { return Usergrid.sharedInstance.userAuth }
+
public static var userAuth: UsergridUserAuth?
@@ -457,7 +460,7 @@

Declaration

Declaration

Swift

-
public static var appAuth: UsergridAppAuth?
+
public static var appAuth: UsergridAppAuth?
@@ -484,7 +487,7 @@

Declaration

Declaration

Swift

-
public static var authMode: UsergridAuthMode
+
public static var authMode: UsergridAuthMode
@@ -522,7 +525,7 @@

Initialization

Declaration

Swift

-
public static func initSharedInstance(orgId orgId : String, appId: String) -> UsergridClient
+
public static func initSharedInstance(orgId : String, appId: String) -> UsergridClient
@@ -587,7 +590,7 @@

Return Value

Declaration

Swift

-
public static func initSharedInstance(orgId orgId : String, appId: String, baseUrl: String) -> UsergridClient
+
public static func initSharedInstance(orgId : String, appId: String, baseUrl: String) -> UsergridClient
@@ -665,7 +668,7 @@

Return Value

Declaration

Swift

-
public static func initSharedInstance(configuration configuration: UsergridClientConfig) -> UsergridClient
+
public static func initSharedInstance(configuration: UsergridClientConfig) -> UsergridClient
@@ -711,9 +714,9 @@

Push Notifications

  • @@ -728,7 +731,7 @@

    Push Notifications

    Declaration

    Swift

    -
    public static func applyPushToken(pushToken: NSData, notifierID: String, completion: UsergridResponseCompletion? = nil)
    +
    public static func applyPushToken(_ pushToken: Data, notifierID: String, completion: UsergridResponseCompletion? = nil)
    @@ -784,9 +787,9 @@

    Parameters

  • @@ -801,7 +804,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func applyPushToken(device: UsergridDevice, pushToken: NSData, notifierID: String, completion: UsergridResponseCompletion? = nil)
    +
    public static func applyPushToken(_ device: UsergridDevice, pushToken: Data, notifierID: String, completion: UsergridResponseCompletion? = nil)
    @@ -900,7 +903,7 @@

    Authorization

    Declaration

    Swift

    -
    public static func usingAuth(auth:UsergridAuth) -> UsergridClient
    +
    public static func usingAuth(_ auth:UsergridAuth) -> UsergridClient
    @@ -954,7 +957,7 @@

    Return Value

    Declaration

    Swift

    -
    public static func usingToken(token:String) -> UsergridClient
    +
    public static func usingToken(_ token:String) -> UsergridClient
    @@ -1010,7 +1013,7 @@

    Return Value

    Declaration

    Swift

    -
    public static func authForRequests() -> UsergridAuth?
    +
    public static func authForRequests() -> UsergridAuth?
    @@ -1025,9 +1028,9 @@

    Return Value

  • @@ -1042,7 +1045,7 @@

    Return Value

    Declaration

    Swift

    -
    public static func authenticateApp(completion: UsergridAppAuthCompletionBlock? = nil)
    +
    public static func authenticateApp(_ completion: UsergridAppAuthCompletionBlock? = nil)
    @@ -1072,9 +1075,9 @@

    Parameters

  • @@ -1089,7 +1092,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func authenticateApp(auth: UsergridAppAuth, completion: UsergridAppAuthCompletionBlock? = nil)
    +
    public static func authenticateApp(_ auth: UsergridAppAuth, completion: UsergridAppAuthCompletionBlock? = nil)
    @@ -1132,9 +1135,9 @@

    Parameters

  • @@ -1149,7 +1152,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func authenticateUser(auth: UsergridUserAuth, completion: UsergridUserAuthCompletionBlock? = nil)
    +
    public static func authenticateUser(_ auth: UsergridUserAuth, completion: UsergridUserAuthCompletionBlock? = nil)
    @@ -1192,9 +1195,9 @@

    Parameters

  • @@ -1209,7 +1212,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func authenticateUser(userAuth: UsergridUserAuth, setAsCurrentUser:Bool, completion: UsergridUserAuthCompletionBlock? = nil)
    +
    public static func authenticateUser(_ userAuth: UsergridUserAuth, setAsCurrentUser:Bool, completion: UsergridUserAuthCompletionBlock? = nil)
    @@ -1265,9 +1268,9 @@

    Parameters

  • @@ -1282,7 +1285,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func resetPassword(user: UsergridUser, old:String, new:String, completion:UsergridUserResetPasswordCompletion? = nil)
    +
    public static func resetPassword(_ user: UsergridUser, old:String, new:String, completion:UsergridUserResetPasswordCompletion? = nil)
    @@ -1351,9 +1354,9 @@

    Parameters

  • @@ -1368,7 +1371,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func logoutCurrentUser(completion:UsergridResponseCompletion? = nil)
    +
    public static func logoutCurrentUser(_ completion:UsergridResponseCompletion? = nil)
    @@ -1398,9 +1401,9 @@

    Parameters

  • @@ -1415,7 +1418,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func logoutUserAllTokens(uuidOrUsername:String, completion:UsergridResponseCompletion? = nil)
    +
    public static func logoutUserAllTokens(_ uuidOrUsername:String, completion:UsergridResponseCompletion? = nil)
    @@ -1445,9 +1448,9 @@

    Parameters

  • @@ -1464,7 +1467,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func logoutUser(uuidOrUsername:String, token:String?, completion:UsergridResponseCompletion? = nil)
    +
    public static func logoutUser(_ uuidOrUsername:String, token:String?, completion:UsergridResponseCompletion? = nil)
    @@ -1505,9 +1508,9 @@

    Generic Request Methods

  • @@ -1528,7 +1531,7 @@

    Generic Request Methods

    Declaration

    Swift

    -
    public static func sendRequest(request:UsergridRequest, completion:UsergridResponseCompletion? = nil)
    +
    public static func sendRequest(_ request:UsergridRequest, completion:UsergridResponseCompletion? = nil)
    @@ -1582,9 +1585,9 @@

    GET

  • @@ -1599,7 +1602,7 @@

    GET

    Declaration

    Swift

    -
    public static func GET(type: String, uuidOrName: String, completion: UsergridResponseCompletion? = nil)
    +
    public static func GET(_ type: String, uuidOrName: String, completion: UsergridResponseCompletion? = nil)
    @@ -1655,9 +1658,9 @@

    Parameters

  • @@ -1672,7 +1675,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func GET(type: String, completion: UsergridResponseCompletion? = nil)
    +
    public static func GET(_ type: String, completion: UsergridResponseCompletion? = nil)
    @@ -1715,9 +1718,9 @@

    Parameters

  • @@ -1732,7 +1735,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func GET(query: UsergridQuery, queryCompletion: UsergridResponseCompletion? = nil)
    +
    public static func GET(_ query: UsergridQuery, queryCompletion: UsergridResponseCompletion? = nil)
    @@ -1786,9 +1789,9 @@

    PUT

  • @@ -1803,7 +1806,7 @@

    PUT

    Declaration

    Swift

    -
    public static func PUT(type: String, uuidOrName: String, jsonBody:[String:AnyObject], completion: UsergridResponseCompletion? = nil)
    +
    public static func PUT(_ type: String, uuidOrName: String, jsonBody:[String:Any], completion: UsergridResponseCompletion? = nil)
    @@ -1872,9 +1875,9 @@

    Parameters

  • @@ -1895,7 +1898,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func PUT(type: String, jsonBody:[String:AnyObject], completion: UsergridResponseCompletion? = nil)
    +
    public static func PUT(_ type: String, jsonBody:[String:Any], completion: UsergridResponseCompletion? = nil)
    @@ -1951,9 +1954,9 @@

    Parameters

  • @@ -1968,7 +1971,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func PUT(entity: UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public static func PUT(_ entity: UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2011,9 +2014,9 @@

    Parameters

  • @@ -2034,7 +2037,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func PUT(query: UsergridQuery, jsonBody:[String:AnyObject], queryCompletion: UsergridResponseCompletion? = nil)
    +
    public static func PUT(_ query: UsergridQuery, jsonBody:[String:Any], queryCompletion: UsergridResponseCompletion? = nil)
    @@ -2101,9 +2104,9 @@

    POST

  • @@ -2118,7 +2121,7 @@

    POST

    Declaration

    Swift

    -
    public static func POST(type: String, name: String, jsonBody:[String:AnyObject], completion: UsergridResponseCompletion? = nil)
    +
    public static func POST(_ type: String, name: String, jsonBody:[String:Any], completion: UsergridResponseCompletion? = nil)
    @@ -2187,9 +2190,9 @@

    Parameters

  • @@ -2204,7 +2207,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func POST(type: String, jsonBody:[String:AnyObject], completion: UsergridResponseCompletion? = nil)
    +
    public static func POST(_ type: String, jsonBody:[String:Any], completion: UsergridResponseCompletion? = nil)
    @@ -2260,9 +2263,9 @@

    Parameters

  • @@ -2277,7 +2280,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func POST(type: String, jsonBodies:[[String:AnyObject]], completion: UsergridResponseCompletion? = nil)
    +
    public static func POST(_ type: String, jsonBodies:[[String:Any]], completion: UsergridResponseCompletion? = nil)
    @@ -2333,9 +2336,9 @@

    Parameters

  • @@ -2350,7 +2353,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func POST(entity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public static func POST(_ entity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2393,9 +2396,9 @@

    Parameters

  • @@ -2416,7 +2419,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func POST(entities:[UsergridEntity], entitiesCompletion: UsergridResponseCompletion? = nil)
    +
    public static func POST(_ entities:[UsergridEntity], entitiesCompletion: UsergridResponseCompletion? = nil)
    @@ -2470,9 +2473,9 @@

    DELETE

  • @@ -2487,7 +2490,7 @@

    DELETE

    Declaration

    Swift

    -
    public static func DELETE(type:String, uuidOrName: String, completion: UsergridResponseCompletion? = nil)
    +
    public static func DELETE(_ type:String, uuidOrName: String, completion: UsergridResponseCompletion? = nil)
    @@ -2543,9 +2546,9 @@

    Parameters

  • @@ -2566,7 +2569,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func DELETE(entity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public static func DELETE(_ entity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2609,9 +2612,9 @@

    Parameters

  • @@ -2632,7 +2635,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func DELETE(query:UsergridQuery, queryCompletion: UsergridResponseCompletion? = nil)
    +
    public static func DELETE(_ query:UsergridQuery, queryCompletion: UsergridResponseCompletion? = nil)
    @@ -2686,9 +2689,9 @@

    Connection Management

  • @@ -2703,7 +2706,7 @@

    Connection Management

    Declaration

    Swift

    -
    public static func connect(entity:UsergridEntity, relationship:String, to:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public static func connect(_ entity:UsergridEntity, relationship:String, to:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2772,9 +2775,9 @@

    Parameters

  • @@ -2789,7 +2792,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func connect(entityType:String, entityID:String, relationship:String, toType:String?, toID: String, completion: UsergridResponseCompletion? = nil)
    +
    public static func connect(_ entityType:String, entityID:String, relationship:String, toType:String?, toID: String, completion: UsergridResponseCompletion? = nil)
    @@ -2884,9 +2887,9 @@

    Parameters

  • @@ -2901,7 +2904,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func connect(entityType:String, entityID:String, relationship:String, toType:String, toName: String, completion: UsergridResponseCompletion? = nil)
    +
    public static func connect(_ entityType:String, entityID:String, relationship:String, toType:String, toName: String, completion: UsergridResponseCompletion? = nil)
    @@ -2996,9 +2999,9 @@

    Parameters

  • @@ -3013,7 +3016,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func disconnect(entity:UsergridEntity, relationship:String, from:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public static func disconnect(_ entity:UsergridEntity, relationship:String, from:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -3082,9 +3085,9 @@

    Parameters

  • @@ -3099,7 +3102,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func disconnect(entityType:String, entityID:String, relationship:String, fromType:String?, fromID: String, completion: UsergridResponseCompletion? = nil)
    +
    public static func disconnect(_ entityType:String, entityID:String, relationship:String, fromType:String?, fromID: String, completion: UsergridResponseCompletion? = nil)
    @@ -3194,9 +3197,9 @@

    Parameters

  • @@ -3211,7 +3214,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func disconnect(entityType:String, entityID:String, relationship:String, fromType:String, fromName: String, completion: UsergridResponseCompletion? = nil)
    +
    public static func disconnect(_ entityType:String, entityID:String, relationship:String, fromType:String, fromName: String, completion: UsergridResponseCompletion? = nil)
    @@ -3306,9 +3309,9 @@

    Parameters

  • @@ -3323,7 +3326,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func getConnections(direction:UsergridDirection, entity:UsergridEntity, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public static func getConnections(_ direction:UsergridDirection, entity:UsergridEntity, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -3392,9 +3395,9 @@

    Parameters

  • @@ -3409,7 +3412,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func getConnections(direction:UsergridDirection, type:String, uuidOrName:String, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public static func getConnections(_ direction:UsergridDirection, type:String, uuidOrName:String, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -3504,9 +3507,9 @@

    Parameters

  • @@ -3521,7 +3524,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func getConnections(direction:UsergridDirection, uuid:String, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public static func getConnections(_ direction:UsergridDirection, uuid:String, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -3614,9 +3617,9 @@

    Asset Management

  • @@ -3631,7 +3634,7 @@

    Asset Management

    Declaration

    Swift

    -
    public static func uploadAsset(entity:UsergridEntity, asset:UsergridAsset, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetUploadCompletion? = nil)
    +
    public static func uploadAsset(_ entity:UsergridEntity, asset:UsergridAsset, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetUploadCompletion? = nil)
    @@ -3700,9 +3703,9 @@

    Parameters

  • @@ -3717,7 +3720,7 @@

    Parameters

    Declaration

    Swift

    -
    public static func downloadAsset(entity:UsergridEntity, contentType:String, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetDownloadCompletion? = nil)
    +
    public static func downloadAsset(_ entity:UsergridEntity, contentType:String, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetDownloadCompletion? = nil)
    @@ -3746,7 +3749,7 @@

    Parameters

    -

    The content type of the asset’s data.

    +

    The content type of the asset’s data.

    @@ -3788,8 +3791,8 @@

    Parameters

  • diff --git a/docs/Classes/UsergridAppAuth.html b/docs/Classes/UsergridAppAuth.html index 70c940e..405a50f 100644 --- a/docs/Classes/UsergridAppAuth.html +++ b/docs/Classes/UsergridAppAuth.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions @@ -165,7 +168,7 @@

    UsergridAppAuth

    -
    public class UsergridAppAuth : UsergridAuth
    +
    public class UsergridAppAuth : UsergridAuth
    @@ -233,7 +236,7 @@

    Initialization

    -

    Designated initializer for UsergridAppAuth objects.

    +

    Designated initializer for UsergridAppAuth objects.

    @@ -279,7 +282,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridAppAuth.

    +

    A new instance of UsergridAppAuth.

    @@ -342,7 +345,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridAppAuth object.

    +

    A decoded UsergridAppAuth object.

    @@ -351,9 +354,9 @@

    Return Value

  • - - - encodeWithCoder(_:) + + + encode(with:)
    @@ -368,7 +371,7 @@

    Return Value

    Declaration

    Swift

    -
    override public func encodeWithCoder(aCoder: NSCoder)
    +
    override public func encode(with aCoder: NSCoder)
    @@ -400,8 +403,8 @@

    Parameters

    diff --git a/docs/Classes/UsergridAsset.html b/docs/Classes/UsergridAsset.html index 568d727..9a719d6 100644 --- a/docs/Classes/UsergridAsset.html +++ b/docs/Classes/UsergridAsset.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -214,9 +217,9 @@

    Declaration

  • - + - data + data
    @@ -231,7 +234,7 @@

    Declaration

    Declaration

    Swift

    -
    public let data: NSData
    +
    public let data: Data
    @@ -312,7 +315,7 @@

    Declaration

    Declaration

    Swift

    -
    public var contentLength: Int { return self.data.length }
    +
    public var contentLength: Int
    @@ -333,9 +336,9 @@

    Initialization

  • - + - init(filename:data:originalLocation:contentType:) + init(filename:data:originalLocation:contentType:)
    @@ -343,14 +346,14 @@

    Initialization

    -

    Designated initializer for UsergridAsset objects.

    +

    Designated initializer for UsergridAsset objects.

    Declaration

    Swift

    -
    public init(filename:String? = UsergridAsset.DEFAULT_FILE_NAME, data:NSData, originalLocation:String? = nil, contentType:String)
    +
    public init(filename:String? = UsergridAsset.DEFAULT_FILE_NAME, data:Data, originalLocation:String? = nil, contentType:String)
    @@ -415,7 +418,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridAsset.

    +

    A new instance of UsergridAsset.

    @@ -434,14 +437,14 @@

    Return Value

    -

    Convenience initializer for UsergridAsset objects dealing with image data.

    +

    Convenience initializer for UsergridAsset objects dealing with image data.

    Declaration

    Swift

    -
    public convenience init?(filename:String? = UsergridAsset.DEFAULT_FILE_NAME, image:UIImage, imageContentType:UsergridImageContentType = .Png)
    +
    public convenience init?(filename:String? = UsergridAsset.DEFAULT_FILE_NAME, image:UIImage, imageContentType:UsergridImageContentType = .png)
    @@ -493,7 +496,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridAsset if the data can be gathered from the passed in UIImage, otherwise nil.

    +

    A new instance of UsergridAsset if the data can be gathered from the passed in UIImage, otherwise nil.

    @@ -502,9 +505,9 @@

    Return Value

  • - + - init(filename:fileURL:contentType:) + init(filename:fileURL:contentType:)
    @@ -512,14 +515,14 @@

    Return Value

    -

    Convenience initializer for UsergridAsset objects dealing directly with files on disk.

    +

    Convenience initializer for UsergridAsset objects dealing directly with files on disk.

    Declaration

    Swift

    -
    public convenience init?(filename:String? = UsergridAsset.DEFAULT_FILE_NAME, fileURL:NSURL, contentType:String? = nil)
    +
    public convenience init?(filename:String? = UsergridAsset.DEFAULT_FILE_NAME, fileURL:URL, contentType:String? = nil)
    @@ -561,7 +564,7 @@

    Parameters

    -

    The content type of the UIImage. If not specified it will try to figure out the type and if it can’t initialization will fail.

    +

    The content type of the UIImage. If not specified it will try to figure out the type and if it can’t initialization will fail.

    @@ -571,7 +574,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridAsset if the data can be gathered from the passed in NSURL, otherwise nil.

    +

    A new instance of UsergridAsset if the data can be gathered from the passed in NSURL, otherwise nil.

    @@ -634,7 +637,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridUser object.

    +

    A decoded UsergridAsset object.

    @@ -643,9 +646,9 @@

    Return Value

  • - - - encodeWithCoder(_:) + + + encode(with:)
    @@ -660,7 +663,7 @@

    Return Value

    Declaration

    Swift

    -
    public func encodeWithCoder(aCoder: NSCoder)
    +
    public func encode(with aCoder: NSCoder)
    @@ -692,8 +695,8 @@

    Parameters

    diff --git a/docs/Classes/UsergridAssetUploadRequest.html b/docs/Classes/UsergridAssetUploadRequest.html index f7a0b00..b37bbf1 100644 --- a/docs/Classes/UsergridAssetUploadRequest.html +++ b/docs/Classes/UsergridAssetUploadRequest.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -165,7 +168,7 @@

    UsergridAssetUploadRequest

    -
    public class UsergridAssetUploadRequest: UsergridRequest
    +
    public class UsergridAssetUploadRequest: UsergridRequest
    @@ -202,7 +205,7 @@

    Instance Properties

    Declaration

    Swift

    -
    public let asset: UsergridAsset
    +
    public let asset: UsergridAsset
    @@ -212,9 +215,9 @@

    Declaration

  • - + - multiPartHTTPBody + multiPartHTTPBody
    @@ -229,7 +232,7 @@

    Declaration

    Declaration

    Swift

    -
    public var multiPartHTTPBody: NSData
    +
    public var multiPartHTTPBody: Data
    @@ -260,7 +263,7 @@

    Initialization

    -

    The designated initializer for UsergridAssetUploadRequest objects.

    +

    The designated initializer for UsergridAssetUploadRequest objects.

    @@ -269,8 +272,8 @@

    Declaration

    Swift

    public init(baseUrl:String,
                     paths:[String]? = nil,
    -                auth:UsergridAuth? = nil,
    -                asset:UsergridAsset)
    + auth:UsergridAuth? = nil, + asset:UsergridAsset)
    @@ -346,8 +349,8 @@

    Return Value

    diff --git a/docs/Classes/UsergridAuth.html b/docs/Classes/UsergridAuth.html index 8d1f6fd..2382c37 100644 --- a/docs/Classes/UsergridAuth.html +++ b/docs/Classes/UsergridAuth.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -197,7 +200,7 @@

    Instance Properties

    -

    The access token, if this UsergridAuth was authorized successfully.

    +

    The access token, if this UsergridAuth was authorized successfully.

    @@ -214,9 +217,9 @@

    Declaration

  • - + - expiry + expiry
    @@ -224,14 +227,14 @@

    Declaration

    -

    The expires at date, if this UsergridAuth was authorized successfully and their was a expires in time stamp within the token response.

    +

    The expires at date, if this UsergridAuth was authorized successfully and their was a expires in time stamp within the token response.

    Declaration

    Swift

    -
    public var expiry : NSDate?
    +
    public var expiry : Date?
    @@ -258,7 +261,7 @@

    Declaration

    Declaration

    Swift

    -
    public var hasToken: Bool { return self.accessToken != nil }
    +
    public var hasToken: Bool
    @@ -285,7 +288,7 @@

    Declaration

    Declaration

    Swift

    -
    public var isValid : Bool { return self.hasToken && !self.isExpired }
    +
    public var isValid : Bool
  • @@ -333,9 +336,9 @@

    Initialization

  • @@ -343,14 +346,14 @@

    Initialization

    -

    Initializer for a base UsergridAuth object that just contains an accessToken and an optional expiry date.

    +

    Initializer for a base UsergridAuth object that just contains an accessToken and an optional expiry date.

    Declaration

    Swift

    -
    public init(accessToken:String, expiry:NSDate? = nil)
    +
    public init(accessToken:String, expiry:Date? = nil)
    @@ -389,7 +392,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridAuth

    +

    A new instance of UsergridAuth

  • @@ -452,7 +455,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridAuth object.

    +

    A decoded UsergridAuth object.

    @@ -461,9 +464,9 @@

    Return Value

  • - - - encodeWithCoder(_:) + + + encode(with:)
    @@ -478,7 +481,7 @@

    Return Value

    Declaration

    Swift

    -
    public func encodeWithCoder(aCoder: NSCoder)
    +
    public func encode(with aCoder: NSCoder)
    @@ -548,8 +551,8 @@

    Declaration

    diff --git a/docs/Classes/UsergridClient.html b/docs/Classes/UsergridClient.html index 09c2175..b08b561 100644 --- a/docs/Classes/UsergridClient.html +++ b/docs/Classes/UsergridClient.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -173,6 +176,71 @@

    UsergridClient

    +
    + +
      +
    • +
      + + + + DEFAULT_BASE_URL + +
      +
      +
      +
      +
      +
      +

      The default base URL for all calls made by the UsergridClient instances.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public static let DEFAULT_BASE_URL = "https://apibaas-trial.apigee.net"
      + +
      +
      +
      +
      +
    • +
    • +
      + + + + DEFAULT_AUTH_MODE + +
      +
      +
      +
      +
      +
      +

      The default auth mode used when creating UsergridClient instances.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public static let DEFAULT_AUTH_MODE: UsergridAuthMode = .user
      + +
      +
      +
      +
      +
    • +
    +
    @@ -202,7 +270,7 @@

    Instance Properties

    Declaration

    Swift

    -
    public let config: UsergridClientConfig
    +
    public let config: UsergridClientConfig
    @@ -229,7 +297,7 @@

    Declaration

    Declaration

    Swift

    -
    public var appId : String { return config.appId }
    +
    public var appId : String
    @@ -256,7 +324,7 @@

    Declaration

    Declaration

    Swift

    -
    public var orgId : String { return config.orgId }
    +
    public var orgId : String
    @@ -283,7 +351,7 @@

    Declaration

    Declaration

    Swift

    -
    public var baseUrl : String { return config.baseUrl }
    +
    public var baseUrl : String
    @@ -303,14 +371,14 @@

    Declaration

    -

    The constructed URL string based on the UsergridClient’s baseUrl, orgId, and appId.

    +

    The constructed URL string based on the UsergridClient’s baseUrl, orgId, and appId.

    Declaration

    Swift

    -
    public var clientAppURL : String { return "\(baseUrl)/\(orgId)/\(appId)" }
    +
    public var clientAppURL : String
    @@ -364,7 +432,7 @@

    Declaration

    Declaration

    Swift

    -
    internal(set) public var currentUser: UsergridUser? = nil
    +
    internal(set) public var currentUser: UsergridUser? = nil
    @@ -391,7 +459,7 @@

    Declaration

    Declaration

    Swift

    -
    public var userAuth: UsergridUserAuth? { return currentUser?.auth }
    +
    public var userAuth: UsergridUserAuth?
    @@ -411,14 +479,14 @@

    Declaration

    -

    The application level UsergridAppAuth object. Can be set manually but must call authenticateApp to retrive token.

    +

    The application level UsergridAppAuth object. Can be set manually but must call authenticateApp to retrieve token.

    Declaration

    Swift

    -
    public var appAuth: UsergridAppAuth?
    +
    public var appAuth: UsergridAppAuth?
    @@ -445,7 +513,7 @@

    Declaration

    Declaration

    Swift

    -
    public var authMode: UsergridAuthMode
    +
    public var authMode: UsergridAuthMode
    @@ -476,7 +544,7 @@

    Initialization

    -

    Initializes instances of UsergridClient.

    +

    Initializes instances of UsergridClient.

    @@ -522,7 +590,7 @@

    Parameters

    Return Value

    -

    The new instance of UsergridClient.

    +

    The new instance of UsergridClient.

    @@ -541,7 +609,7 @@

    Return Value

    -

    Initializes instances of UsergridClient.

    +

    Initializes instances of UsergridClient.

    @@ -600,7 +668,7 @@

    Parameters

    Return Value

    -

    The new instance of UsergridClient.

    +

    The new instance of UsergridClient.

    @@ -619,14 +687,14 @@

    Return Value

    -

    Initializes instances of UsergridClient.

    +

    Initializes instances of UsergridClient.

    Declaration

    Swift

    -
    public init(configuration:UsergridClientConfig)
    +
    public init(configuration:UsergridClientConfig)
    @@ -652,7 +720,7 @@

    Parameters

    Return Value

    -

    The new instance of UsergridClient.

    +

    The new instance of UsergridClient.

    @@ -715,7 +783,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridClient object.

    +

    A decoded UsergridClient object.

    @@ -724,9 +792,9 @@

    Return Value

  • @@ -741,7 +809,7 @@

    Return Value

    Declaration

    Swift

    -
    public func encodeWithCoder(aCoder: NSCoder)
    +
    public func encode(with aCoder: NSCoder)
    @@ -782,9 +850,9 @@

    Device Registration/Push Notifications

  • @@ -799,7 +867,7 @@

    Device Registration/Push Notifications

    Declaration

    Swift

    -
    public func applyPushToken(pushToken: NSData, notifierID: String, completion: UsergridResponseCompletion? = nil)
    +
    public func applyPushToken(_ pushToken: Data, notifierID: String, completion: UsergridResponseCompletion? = nil)
    @@ -855,9 +923,9 @@

    Parameters

  • @@ -872,7 +940,7 @@

    Parameters

    Declaration

    Swift

    -
    public func applyPushToken(device: UsergridDevice, pushToken: NSData, notifierID: String, completion: UsergridResponseCompletion? = nil)
    +
    public func applyPushToken(_ device: UsergridDevice, pushToken: Data, notifierID: String, completion: UsergridResponseCompletion? = nil)
    @@ -975,7 +1043,7 @@

    Authorization and User Management

    Declaration

    Swift

    -
    public func authForRequests() -> UsergridAuth?
    +
    public func authForRequests() -> UsergridAuth?
    @@ -1009,7 +1077,7 @@

    Return Value

    Declaration

    Swift

    -
    public func usingAuth(auth:UsergridAuth) -> Self
    +
    public func usingAuth(_ auth:UsergridAuth) -> Self
    @@ -1063,7 +1131,7 @@

    Return Value

    Declaration

    Swift

    -
    public func usingToken(token:String) -> Self
    +
    public func usingToken(_ token:String) -> Self
    @@ -1098,9 +1166,9 @@

    Return Value

  • @@ -1115,7 +1183,7 @@

    Return Value

    Declaration

    Swift

    -
    public func authenticateApp(completion: UsergridAppAuthCompletionBlock? = nil)
    +
    public func authenticateApp(_ completion: UsergridAppAuthCompletionBlock? = nil)
    @@ -1145,9 +1213,9 @@

    Parameters

  • @@ -1162,7 +1230,7 @@

    Parameters

    Declaration

    Swift

    -
    public func authenticateApp(appAuth: UsergridAppAuth, completion: UsergridAppAuthCompletionBlock? = nil)
    +
    public func authenticateApp(_ appAuth: UsergridAppAuth, completion: UsergridAppAuthCompletionBlock? = nil)
    @@ -1205,9 +1273,9 @@

    Parameters

  • @@ -1222,7 +1290,7 @@

    Parameters

    Declaration

    Swift

    -
    public func authenticateUser(userAuth: UsergridUserAuth, completion: UsergridUserAuthCompletionBlock? = nil)
    +
    public func authenticateUser(_ userAuth: UsergridUserAuth, completion: UsergridUserAuthCompletionBlock? = nil)
    @@ -1265,9 +1333,9 @@

    Parameters

  • @@ -1282,7 +1350,7 @@

    Parameters

    Declaration

    Swift

    -
    public func authenticateUser(userAuth: UsergridUserAuth, setAsCurrentUser: Bool, completion: UsergridUserAuthCompletionBlock? = nil)
    +
    public func authenticateUser(_ userAuth: UsergridUserAuth, setAsCurrentUser: Bool, completion: UsergridUserAuthCompletionBlock? = nil)
    @@ -1338,9 +1406,9 @@

    Parameters

  • @@ -1355,7 +1423,7 @@

    Parameters

    Declaration

    Swift

    -
    public func resetPassword(user: UsergridUser, old:String, new:String, completion:UsergridUserResetPasswordCompletion? = nil)
    +
    public func resetPassword(_ user: UsergridUser, old:String, new:String, completion:UsergridUserResetPasswordCompletion? = nil)
    @@ -1424,9 +1492,9 @@

    Parameters

  • @@ -1441,7 +1509,7 @@

    Parameters

    Declaration

    Swift

    -
    public func logoutCurrentUser(completion:UsergridResponseCompletion? = nil)
    +
    public func logoutCurrentUser(_ completion:UsergridResponseCompletion? = nil)
    @@ -1471,9 +1539,9 @@

    Parameters

  • @@ -1488,7 +1556,7 @@

    Parameters

    Declaration

    Swift

    -
    public func logoutUserAllTokens(uuidOrUsername:String, completion:UsergridResponseCompletion? = nil)
    +
    public func logoutUserAllTokens(_ uuidOrUsername:String, completion:UsergridResponseCompletion? = nil)
    @@ -1518,9 +1586,9 @@

    Parameters

  • @@ -1537,7 +1605,7 @@

    Parameters

    Declaration

    Swift

    -
    public func logoutUser(uuidOrUsername:String, token:String?, completion:UsergridResponseCompletion? = nil)
    +
    public func logoutUser(_ uuidOrUsername:String, token:String?, completion:UsergridResponseCompletion? = nil)
    @@ -1578,9 +1646,9 @@

    Generic Request Methods

  • @@ -1601,7 +1669,7 @@

    Generic Request Methods

    Declaration

    Swift

    -
    public func sendRequest(request:UsergridRequest, completion:UsergridResponseCompletion? = nil)
    +
    public func sendRequest(_ request:UsergridRequest, completion:UsergridResponseCompletion? = nil)
    @@ -1655,9 +1723,9 @@

    GET

  • @@ -1672,7 +1740,7 @@

    GET

    Declaration

    Swift

    -
    public func GET(type: String, uuidOrName: String, completion: UsergridResponseCompletion? = nil)
    +
    public func GET(_ type: String, uuidOrName: String, completion: UsergridResponseCompletion? = nil)
    @@ -1728,9 +1796,9 @@

    Parameters

  • @@ -1745,7 +1813,7 @@

    Parameters

    Declaration

    Swift

    -
    public func GET(type: String, completion: UsergridResponseCompletion? = nil)
    +
    public func GET(_ type: String, completion: UsergridResponseCompletion? = nil)
    @@ -1788,9 +1856,9 @@

    Parameters

  • @@ -1805,7 +1873,7 @@

    Parameters

    Declaration

    Swift

    -
    public func GET(query: UsergridQuery, queryCompletion: UsergridResponseCompletion? = nil)
    +
    public func GET(_ query: UsergridQuery, queryCompletion: UsergridResponseCompletion? = nil)
    @@ -1859,9 +1927,9 @@

    PUT

  • @@ -1876,7 +1944,7 @@

    PUT

    Declaration

    Swift

    -
    public func PUT(type: String, uuidOrName: String, jsonBody:[String:AnyObject], completion: UsergridResponseCompletion? = nil)
    +
    public func PUT(_ type: String, uuidOrName: String, jsonBody:[String:Any], completion: UsergridResponseCompletion? = nil)
    @@ -1945,9 +2013,9 @@

    Parameters

  • @@ -1962,7 +2030,7 @@

    Parameters

    Declaration

    Swift

    -
    public func PUT(entity: UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public func PUT(_ entity: UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2005,9 +2073,9 @@

    Parameters

  • @@ -2028,7 +2096,7 @@

    Parameters

    Declaration

    Swift

    -
    public func PUT(type: String, jsonBody:[String:AnyObject], completion: UsergridResponseCompletion? = nil)
    +
    public func PUT(_ type: String, jsonBody:[String:Any], completion: UsergridResponseCompletion? = nil)
    @@ -2084,9 +2152,9 @@

    Parameters

  • @@ -2107,7 +2175,7 @@

    Parameters

    Declaration

    Swift

    -
    public func PUT(query: UsergridQuery, jsonBody:[String:AnyObject], queryCompletion: UsergridResponseCompletion? = nil)
    +
    public func PUT(_ query: UsergridQuery, jsonBody:[String:Any], queryCompletion: UsergridResponseCompletion? = nil)
    @@ -2174,9 +2242,9 @@

    POST

  • @@ -2193,7 +2261,7 @@

    POST

    Declaration

    Swift

    -
    public func POST(entity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public func POST(_ entity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2236,9 +2304,9 @@

    Parameters

  • @@ -2259,7 +2327,7 @@

    Parameters

    Declaration

    Swift

    -
    public func POST(entities:[UsergridEntity], entitiesCompletion: UsergridResponseCompletion? = nil)
    +
    public func POST(_ entities:[UsergridEntity], entitiesCompletion: UsergridResponseCompletion? = nil)
    @@ -2302,9 +2370,9 @@

    Parameters

  • @@ -2319,7 +2387,7 @@

    Parameters

    Declaration

    Swift

    -
    public func POST(type: String, jsonBody:[String:AnyObject], completion: UsergridResponseCompletion? = nil)
    +
    public func POST(_ type: String, jsonBody:[String:Any], completion: UsergridResponseCompletion? = nil)
    @@ -2375,9 +2443,9 @@

    Parameters

  • @@ -2392,7 +2460,7 @@

    Parameters

    Declaration

    Swift

    -
    public func POST(type: String, jsonBodies:[[String:AnyObject]], completion: UsergridResponseCompletion? = nil)
    +
    public func POST(_ type: String, jsonBodies:[[String:Any]], completion: UsergridResponseCompletion? = nil)
    @@ -2448,9 +2516,9 @@

    Parameters

  • @@ -2465,7 +2533,7 @@

    Parameters

    Declaration

    Swift

    -
    public func POST(type: String, name: String, jsonBody:[String:AnyObject], completion: UsergridResponseCompletion? = nil)
    +
    public func POST(_ type: String, name: String, jsonBody:[String:Any], completion: UsergridResponseCompletion? = nil)
    @@ -2545,9 +2613,9 @@

    DELETE

  • @@ -2568,7 +2636,7 @@

    DELETE

    Declaration

    Swift

    -
    public func DELETE(entity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public func DELETE(_ entity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2611,9 +2679,9 @@

    Parameters

  • @@ -2634,7 +2702,7 @@

    Parameters

    Declaration

    Swift

    -
    public func DELETE(query:UsergridQuery, queryCompletion: UsergridResponseCompletion? = nil)
    +
    public func DELETE(_ query:UsergridQuery, queryCompletion: UsergridResponseCompletion? = nil)
    @@ -2677,9 +2745,9 @@

    Parameters

  • @@ -2694,7 +2762,7 @@

    Parameters

    Declaration

    Swift

    -
    public func DELETE(type:String, uuidOrName: String, completion: UsergridResponseCompletion? = nil)
    +
    public func DELETE(_ type:String, uuidOrName: String, completion: UsergridResponseCompletion? = nil)
    @@ -2761,9 +2829,9 @@

    Connection Management

  • @@ -2778,7 +2846,7 @@

    Connection Management

    Declaration

    Swift

    -
    public func connect(entity:UsergridEntity, relationship:String, to:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public func connect(_ entity:UsergridEntity, relationship:String, to:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2847,9 +2915,9 @@

    Parameters

  • @@ -2864,7 +2932,7 @@

    Parameters

    Declaration

    Swift

    -
    public func connect(entityType:String, entityID:String, relationship:String, toType:String, toName: String, completion: UsergridResponseCompletion? = nil)
    +
    public func connect(_ entityType:String, entityID:String, relationship:String, toType:String, toName: String, completion: UsergridResponseCompletion? = nil)
    @@ -2959,9 +3027,9 @@

    Parameters

  • @@ -2976,7 +3044,7 @@

    Parameters

    Declaration

    Swift

    -
    public func connect(entityType:String, entityID:String, relationship:String, toType:String?, toID: String, completion: UsergridResponseCompletion? = nil)
    +
    public func connect(_ entityType:String, entityID:String, relationship:String, toType:String?, toID: String, completion: UsergridResponseCompletion? = nil)
    @@ -3071,9 +3139,9 @@

    Parameters

  • @@ -3088,7 +3156,7 @@

    Parameters

    Declaration

    Swift

    -
    public func disconnect(entity:UsergridEntity, relationship:String, from:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public func disconnect(_ entity:UsergridEntity, relationship:String, from:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -3157,9 +3225,9 @@

    Parameters

  • @@ -3174,7 +3242,7 @@

    Parameters

    Declaration

    Swift

    -
    public func disconnect(entityType:String, entityID:String, relationship:String, fromType:String, fromName: String, completion: UsergridResponseCompletion? = nil)
    +
    public func disconnect(_ entityType:String, entityID:String, relationship:String, fromType:String, fromName: String, completion: UsergridResponseCompletion? = nil)
    @@ -3269,9 +3337,9 @@

    Parameters

  • @@ -3286,7 +3354,7 @@

    Parameters

    Declaration

    Swift

    -
    public func disconnect(entityType:String, entityID:String, relationship:String, fromType:String?, fromID: String, completion: UsergridResponseCompletion? = nil)
    +
    public func disconnect(_ entityType:String, entityID:String, relationship:String, fromType:String?, fromID: String, completion: UsergridResponseCompletion? = nil)
    @@ -3381,9 +3449,9 @@

    Parameters

  • @@ -3398,7 +3466,7 @@

    Parameters

    Declaration

    Swift

    -
    public func getConnections(direction:UsergridDirection, entity:UsergridEntity, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public func getConnections(_ direction:UsergridDirection, entity:UsergridEntity, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -3467,9 +3535,9 @@

    Parameters

  • @@ -3484,7 +3552,7 @@

    Parameters

    Declaration

    Swift

    -
    public func getConnections(direction:UsergridDirection, type:String, uuidOrName:String, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public func getConnections(_ direction:UsergridDirection, type:String, uuidOrName:String, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -3579,9 +3647,9 @@

    Parameters

  • @@ -3596,7 +3664,7 @@

    Parameters

    Declaration

    Swift

    -
    public func getConnections(direction:UsergridDirection, uuid:String, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public func getConnections(_ direction:UsergridDirection, uuid:String, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -3689,9 +3757,9 @@

    Asset Management

  • @@ -3706,7 +3774,7 @@

    Asset Management

    Declaration

    Swift

    -
    public func uploadAsset(entity:UsergridEntity, asset:UsergridAsset, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetUploadCompletion? = nil)
    +
    public func uploadAsset(_ entity:UsergridEntity, asset:UsergridAsset, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetUploadCompletion? = nil)
    @@ -3775,9 +3843,9 @@

    Parameters

  • @@ -3792,7 +3860,7 @@

    Parameters

    Declaration

    Swift

    -
    public func downloadAsset(entity:UsergridEntity, contentType:String, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetDownloadCompletion? = nil)
    +
    public func downloadAsset(_ entity:UsergridEntity, contentType:String, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetDownloadCompletion? = nil)
    @@ -3821,7 +3889,7 @@

    Parameters

    -

    The content type of the asset’s data.

    +

    The content type of the asset’s data.

    @@ -3863,8 +3931,8 @@

    Parameters

  • diff --git a/docs/Classes/UsergridClientConfig.html b/docs/Classes/UsergridClientConfig.html index b7abeab..a75bf42 100644 --- a/docs/Classes/UsergridClientConfig.html +++ b/docs/Classes/UsergridClientConfig.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions @@ -258,7 +261,7 @@

    Declaration

    Declaration

    Swift

    -
    public var baseUrl: String = UsergridClient.DEFAULT_BASE_URL
    +
    public var baseUrl: String = UsergridClient.DEFAULT_BASE_URL
    @@ -285,7 +288,7 @@

    Declaration

    Declaration

    Swift

    -
    public var authMode: UsergridAuthMode = .User
    +
    public var authMode: UsergridAuthMode = UsergridClient.DEFAULT_AUTH_MODE
    @@ -341,7 +344,7 @@

    Declaration

    Declaration

    Swift

    -
    public var appAuth: UsergridAppAuth?
    +
    public var appAuth: UsergridAppAuth?
    @@ -372,7 +375,7 @@

    Initialization

    -

    Designated initializer for UsergridClientConfig objects.

    +

    Designated initializer for UsergridClientConfig objects.

    @@ -418,7 +421,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridClientConfig.

    +

    A new instance of UsergridClientConfig.

    @@ -437,7 +440,7 @@

    Return Value

    -

    Convenience initializer for UsergridClientConfig.

    +

    Convenience initializer for UsergridClientConfig.

    @@ -496,7 +499,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridClientConfig.

    +

    A new instance of UsergridClientConfig.

    @@ -515,14 +518,14 @@

    Return Value

    -

    Convenience initializer for UsergridClientConfig.

    +

    Convenience initializer for UsergridClientConfig.

    Declaration

    Swift

    -
    public convenience init(orgId: String, appId: String, baseUrl:String, authMode:UsergridAuthMode, persistCurrentUserInKeychain: Bool = true, appAuth:UsergridAppAuth? = nil)
    +
    public convenience init(orgId: String, appId: String, baseUrl:String, authMode:UsergridAuthMode, persistCurrentUserInKeychain: Bool = true, appAuth:UsergridAppAuth? = nil)
    @@ -613,7 +616,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridClientConfig.

    +

    A new instance of UsergridClientConfig.

    @@ -676,7 +679,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridUser object.

    +

    A decoded UsergridClientConfig object.

    @@ -685,9 +688,9 @@

    Return Value

  • - - - encodeWithCoder(_:) + + + encode(with:)
    @@ -702,7 +705,7 @@

    Return Value

    Declaration

    Swift

    -
    public func encodeWithCoder(aCoder: NSCoder)
    +
    public func encode(with aCoder: NSCoder)
    @@ -734,8 +737,8 @@

    Parameters

    diff --git a/docs/Classes/UsergridDevice.html b/docs/Classes/UsergridDevice.html index 9cda8aa..ac93abe 100644 --- a/docs/Classes/UsergridDevice.html +++ b/docs/Classes/UsergridDevice.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -165,7 +168,7 @@

    UsergridDevice

    -
    public class UsergridDevice : UsergridEntity
    +
    public class UsergridDevice : UsergridEntity
    @@ -180,9 +183,9 @@

    UsergridDevice

  • - + - subscript(_:) + subscript(_:)
    @@ -190,7 +193,7 @@

    UsergridDevice

    -

    Subscript for the UsergridDevice class. Note that all of the UsergridDeviceProperties are immutable.

    +

    Subscript for the UsergridDevice class. Note that all of the UsergridDeviceProperties are immutable.

    Warning

    @@ -208,7 +211,7 @@

    UsergridDevice

    Declaration

    Swift

    -
    override public subscript(propertyName: String) -> AnyObject?
    +
    override public subscript(propertyName: String) -> Any?
    @@ -239,14 +242,14 @@

    Instance Properties

    -

    Property helper method for the UsergridDevice objects device model.

    +

    Property helper method for the UsergridDevice objects device model.

    Declaration

    Swift

    -
    public var model: String { return super[UsergridDeviceProperties.Model.stringValue] as! String }
    +
    public var model: String
    @@ -266,14 +269,14 @@

    Declaration

    -

    Property helper method for the UsergridDevice objects device platform.

    +

    Property helper method for the UsergridDevice objects device platform.

    Declaration

    Swift

    -
    public var platform: String { return super[UsergridDeviceProperties.Platform.stringValue] as! String }
    +
    public var platform: String
    @@ -293,14 +296,14 @@

    Declaration

    -

    Property helper method for the UsergridDevice objects device operating system version.

    +

    Property helper method for the UsergridDevice objects device operating system version.

    Declaration

    Swift

    -
    public var osVersion: String { return super[UsergridDeviceProperties.OSVersion.stringValue] as! String }
    +
    public var osVersion: String
    @@ -320,7 +323,7 @@

    Declaration

    -

    The shared instance of UsergridDevice.

    +

    The shared instance of UsergridDevice.

    @@ -358,9 +361,9 @@

    Initialization

    -

    Designated Initializer for UsergridDevice objects

    +

    Designated Initializer for UsergridDevice objects

    -

    Most likely you will never need to create seperate instances of UsergridDevice. Use of UsergridDevice.sharedInstance is recommended.

    +

    Most likely you will never need to create seperate instances of UsergridDevice. Use of UsergridDevice.sharedInstance is recommended.

    @@ -373,7 +376,7 @@

    Declaration

    Return Value

    -

    A new instance of UsergridDevice.

    +

    A new instance of UsergridDevice.

    @@ -382,9 +385,9 @@

    Return Value

  • @@ -399,7 +402,7 @@

    Return Value

    Declaration

    Swift

    -
    required public init(type:String, name:String? = nil, propertyDict:[String:AnyObject]? = nil)
    +
    required public init(type:String, name:String? = nil, propertyDict:[String:Any]? = nil)
    @@ -451,7 +454,7 @@

    Parameters

  • Return Value

    -

    A new UsergridDevice object.

    +

    A new UsergridDevice object.

    @@ -514,7 +517,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridUser object.

    +

    A decoded UsergridDevice object.

    @@ -523,9 +526,9 @@

    Return Value

  • - - - encodeWithCoder(_:) + + + encode(with:)
    @@ -540,7 +543,7 @@

    Return Value

    Declaration

    Swift

    -
    public override func encodeWithCoder(aCoder: NSCoder)
    +
    public override func encode(with aCoder: NSCoder)
    @@ -570,9 +573,9 @@

    Parameters

  • - + - save(_:) + save(_:)
    @@ -580,7 +583,7 @@

    Parameters

    -

    Performs a PUT (or POST if no UUID is found) on the UsergridDevice using the shared instance of UsergridClient.

    +

    Performs a PUT (or POST if no UUID is found) on the UsergridDevice using the shared instance of UsergridClient.

    If this device is equal to UsergridDevice.sharedDevice it will also update the shared device on the keychain.

    @@ -589,7 +592,7 @@

    Parameters

    Declaration

    Swift

    -
    public override func save(completion: UsergridResponseCompletion? = nil)
    +
    public override func save(_ completion: UsergridResponseCompletion? = nil)
    @@ -619,9 +622,9 @@

    Parameters

  • @@ -629,7 +632,7 @@

    Parameters

    -

    Performs a PUT (or POST if no UUID is found) on the UsergridDevice.

    +

    Performs a PUT (or POST if no UUID is found) on the UsergridDevice.

    If this device is equal to UsergridDevice.sharedDevice it will also update the shared device on the keychain.

    @@ -638,7 +641,7 @@

    Parameters

    Declaration

    Swift

    -
    public override func save(client: UsergridClient, completion: UsergridResponseCompletion? = nil)
    +
    public override func save(_ client: UsergridClient, completion: UsergridResponseCompletion? = nil)
    @@ -719,9 +722,9 @@

    Class Helper Methods

  • @@ -729,14 +732,14 @@

    Class Helper Methods

    -

    Creates a property dictionary that contains the common properties for UsergridDevice objects.

    +

    Creates a property dictionary that contains the common properties for UsergridDevice objects.

    Declaration

    Swift

    -
    public static func commonDevicePropertyDict() -> [String:AnyObject]
    +
    public static func commonDevicePropertyDict() -> [String:Any]
    @@ -753,8 +756,8 @@

    Return Value

  • diff --git a/docs/Classes/UsergridEntity.html b/docs/Classes/UsergridEntity.html index 280138b..7e3f826 100644 --- a/docs/Classes/UsergridEntity.html +++ b/docs/Classes/UsergridEntity.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -165,7 +168,7 @@

    UsergridEntity

    -
    public class UsergridEntity: NSObject, NSCoding
    +
    open class UsergridEntity: NSObject, NSCoding
    @@ -180,9 +183,9 @@

    UsergridEntity

  • @@ -190,7 +193,7 @@

    UsergridEntity

    -

    Subscript for the UsergridEntity class.

    +

    Subscript for the UsergridEntity class.

    • Example usage: @@ -205,7 +208,7 @@

      UsergridEntity

      Declaration

      Swift

      -
      public subscript(propertyName: String) -> AnyObject?
      +
      public subscript(propertyName: String) -> Any?
    @@ -243,7 +246,7 @@

    Instance Properties

    Declaration

    Swift

    -
    internal(set) public var asset: UsergridAsset?
    +
    internal(set) public var asset: UsergridAsset?
    @@ -263,14 +266,14 @@

    Declaration

    -

    The UsergridFileMetaData of this UsergridEntity.

    +

    The UsergridFileMetaData of this UsergridEntity.

    Declaration

    Swift

    -
    internal(set) public var fileMetaData : UsergridFileMetaData?
    +
    internal(set) public var fileMetaData : UsergridFileMetaData?
    @@ -290,14 +293,14 @@

    Declaration

    -

    Property helper method for the UsergridEntity objects UsergridEntityProperties.EntityType.

    +

    Property helper method for the UsergridEntity objects UsergridEntityProperties.type.

    Declaration

    Swift

    -
    public var type: String { return self.getEntitySpecificProperty(.EntityType) as! String }
    +
    public var type: String
    @@ -317,14 +320,14 @@

    Declaration

    -

    Property helper method for the UsergridEntity objects UsergridEntityProperties.UUID.

    +

    Property helper method for the UsergridEntity objects UsergridEntityProperties.uuid.

    Declaration

    Swift

    -
    public var uuid: String? { return self.getEntitySpecificProperty(.UUID) as? String }
    +
    public var uuid: String?
    @@ -344,14 +347,14 @@

    Declaration

    -

    Property helper method for the UsergridEntity objects UsergridEntityProperties.Name.

    +

    Property helper method for the UsergridEntity objects UsergridEntityProperties.name.

    Declaration

    Swift

    -
    public var name: String? { return self.getEntitySpecificProperty(.Name) as? String }
    +
    public var name: String?
    @@ -361,9 +364,9 @@

    Declaration

  • - + - created + created
    @@ -371,14 +374,14 @@

    Declaration

    -

    Property helper method for the UsergridEntity objects UsergridEntityProperties.Created.

    +

    Property helper method for the UsergridEntity objects UsergridEntityProperties.created.

    Declaration

    Swift

    -
    public var created: NSDate? { return self.getEntitySpecificProperty(.Created) as? NSDate }
    +
    public var created: Date?
    @@ -388,9 +391,9 @@

    Declaration

  • - + - modified + modified
    @@ -398,14 +401,14 @@

    Declaration

    -

    Property helper method for the UsergridEntity objects UsergridEntityProperties.Modified.

    +

    Property helper method for the UsergridEntity objects UsergridEntityProperties.modified.

    Declaration

    Swift

    -
    public var modified: NSDate? { return self.getEntitySpecificProperty(.Modified) as? NSDate }
    +
    public var modified: Date?
    @@ -425,7 +428,7 @@

    Declaration

    -

    Property helper method for the UsergridEntity objects UsergridEntityProperties.Location.

    +

    Property helper method for the UsergridEntity objects UsergridEntityProperties.location.

    @@ -452,14 +455,14 @@

    Declaration

    -

    Property helper method to get the UUID or name of the UsergridEntity.

    +

    Property helper method to get the UUID or name of the UsergridEntity.

    Declaration

    Swift

    -
    public var uuidOrName: String? { return self.uuid ?? self.name }
    +
    public var uuidOrName: String?
    @@ -479,14 +482,14 @@

    Declaration

    -

    Tells you if this UsergridEntity has a type of user.

    +

    Tells you if this UsergridEntity has a type of user.

    Declaration

    Swift

    -
    public var isUser: Bool { return self is UsergridUser || self.type == UsergridUser.USER_ENTITY_TYPE }
    +
    public var isUser: Bool
    @@ -513,7 +516,7 @@

    Declaration

    Declaration

    Swift

    -
    public var hasAsset: Bool { return self.asset != nil || self.fileMetaData?.contentLength > 0 }
    +
    public var hasAsset: Bool
    @@ -523,9 +526,9 @@

    Declaration

  • @@ -540,7 +543,7 @@

    Declaration

    Declaration

    Swift

    -
    public var jsonObjectValue : [String:AnyObject] { return self.properties }
    +
    public var jsonObjectValue : [String:Any]
    @@ -567,7 +570,7 @@

    Declaration

    Declaration

    Swift

    -
    public var stringValue : String { return NSString(data: try! NSJSONSerialization.dataWithJSONObject(self.jsonObjectValue, options: .PrettyPrinted), encoding: NSUTF8StringEncoding) as! String }
    +
    public var stringValue : String
  • @@ -594,7 +597,7 @@

    Declaration

    Declaration

    Swift

    -
    public override var description : String
    +
    open override var description : String
  • @@ -621,7 +624,7 @@

    Declaration

    Declaration

    Swift

    -
    public override var debugDescription : String
    +
    open override var debugDescription : String
  • @@ -642,9 +645,9 @@

    Initialization

  • - + - init(type:name:propertyDict:) + init(type:name:propertyDict:)
    @@ -652,14 +655,14 @@

    Initialization

    -

    Designated initializer for UsergridEntity objects

    +

    Designated initializer for UsergridEntity objects

    Declaration

    Swift

    -
    required public init(type:String, name:String? = nil, propertyDict:[String:AnyObject]? = nil)
    +
    required public init(type:String, name:String? = nil, propertyDict:[String:Any]? = nil)
    @@ -711,7 +714,7 @@

    Parameters

    Return Value

    -

    A new UsergridEntity object.

    +

    A new UsergridEntity object.

    @@ -737,7 +740,7 @@

    Return Value

    Declaration

    Swift

    -
    public static func mapCustomType(type:String,toSubclass:UsergridEntity.Type)
    +
    public static func mapCustomType(_ type:String,toSubclass:UsergridEntity.Type)
    @@ -780,9 +783,9 @@

    Parameters

  • - + - entity(jsonDict:) + entity(jsonDict:)
    @@ -790,14 +793,14 @@

    Parameters

    -

    Class convenience constructor for creating UsergridEntity objects dynamically.

    +

    Class convenience constructor for creating UsergridEntity objects dynamically.

    Declaration

    Swift

    -
    public class func entity(jsonDict jsonDict: [String:AnyObject]) -> UsergridEntity?
    +
    public class func entity(jsonDict: [String:Any]) -> UsergridEntity?
    @@ -823,7 +826,7 @@

    Parameters

    Return Value

    -

    A UsergridEntity object provided that the type key within the dictionay exists. Otherwise nil.

    +

    A UsergridEntity object provided that the type key within the dictionay exists. Otherwise nil.

    @@ -832,9 +835,9 @@

    Return Value

  • - + - entities(jsonArray:) + entities(jsonArray:)
    @@ -842,14 +845,14 @@

    Return Value

    -

    Class convenience constructor for creating multiple UsergridEntity objects dynamically.

    +

    Class convenience constructor for creating multiple UsergridEntity objects dynamically.

    Declaration

    Swift

    -
    public class func entities(jsonArray entitiesJSONArray: [[String:AnyObject]]) -> [UsergridEntity]
    +
    public class func entities(jsonArray entitiesJSONArray: [[String:Any]]) -> [UsergridEntity]
    @@ -875,7 +878,7 @@

    Parameters

    Return Value

    -

    An array of UsergridEntity.

    +

    An array of UsergridEntity.

    @@ -938,7 +941,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridUser object.

    +

    A decoded UsergridEntity object.

    @@ -947,9 +950,9 @@

    Return Value

  • - - - encodeWithCoder(_:) + + + encode(with:)
    @@ -964,7 +967,7 @@

    Return Value

    Declaration

    Swift

    -
    public func encodeWithCoder(aCoder: NSCoder)
    +
    open func encode(with aCoder: NSCoder)
    @@ -1005,9 +1008,9 @@

    Property Manipulation

  • - + - putProperty(_:value:) + putProperty(_:value:)
    @@ -1022,7 +1025,7 @@

    Property Manipulation

    Declaration

    Swift

    -
    public func putProperty(name:String,value:AnyObject?)
    +
    public func putProperty(_ name:String,value:Any?)
    @@ -1065,9 +1068,9 @@

    Parameters

  • - + - putProperties(_:) + putProperties(_:)
    @@ -1082,7 +1085,7 @@

    Parameters

    Declaration

    Swift

    -
    public func putProperties(properties:[String:AnyObject])
    +
    public func putProperties(_ properties:[String:Any])
    @@ -1129,7 +1132,7 @@

    Parameters

    Declaration

    Swift

    -
    public func removeProperty(name:String)
    +
    public func removeProperty(_ name:String)
    @@ -1176,7 +1179,7 @@

    Parameters

    Declaration

    Swift

    -
    public func removeProperties(propertyNames:[String])
    +
    public func removeProperties(_ propertyNames:[String])
    @@ -1206,9 +1209,9 @@

    Parameters

  • - + - append(_:value:) + append(_:value:)
    @@ -1223,7 +1226,7 @@

    Parameters

    Declaration

    Swift

    -
    public func append(name:String, value:AnyObject)
    +
    public func append(_ name:String, value:Any)
    @@ -1266,9 +1269,9 @@

    Parameters

  • - + - insert(_:value:index:) + insert(_:value:index:)
    @@ -1283,7 +1286,7 @@

    Parameters

    Declaration

    Swift

    -
    public func insert(name:String, value:AnyObject, index:Int = 0)
    +
    public func insert(_ name:String, value:Any, index:Int = 0)
    @@ -1356,7 +1359,7 @@

    Parameters

    Declaration

    Swift

    -
    public func pop(name:String)
    +
    public func pop(_ name:String)
    @@ -1403,7 +1406,7 @@

    Parameters

    Declaration

    Swift

    -
    public func shift(name:String)
    +
    public func shift(_ name:String)
    @@ -1444,9 +1447,9 @@

    CRUD Convenience Methods

  • - + - reload(_:) + reload(_:)
    @@ -1454,14 +1457,14 @@

    CRUD Convenience Methods

    -

    Performs a GET on the UsergridEntity using the shared instance of UsergridClient.

    +

    Performs a GET on the UsergridEntity using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public func reload(completion: UsergridResponseCompletion? = nil)
    +
    public func reload(_ completion: UsergridResponseCompletion? = nil)
    @@ -1491,9 +1494,9 @@

    Parameters

  • @@ -1501,14 +1504,14 @@

    Parameters

    -

    Performs a GET on the UsergridEntity.

    +

    Performs a GET on the UsergridEntity.

    Declaration

    Swift

    -
    public func reload(client:UsergridClient, completion: UsergridResponseCompletion? = nil)
    +
    public func reload(_ client:UsergridClient, completion: UsergridResponseCompletion? = nil)
    @@ -1551,9 +1554,9 @@

    Parameters

  • - + - save(_:) + save(_:)
    @@ -1561,14 +1564,14 @@

    Parameters

    -

    Performs a PUT (or POST if no UUID is found) on the UsergridEntity using the shared instance of UsergridClient.

    +

    Performs a PUT (or POST if no UUID is found) on the UsergridEntity using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public func save(completion: UsergridResponseCompletion? = nil)
    +
    public func save(_ completion: UsergridResponseCompletion? = nil)
    @@ -1598,9 +1601,9 @@

    Parameters

  • @@ -1608,14 +1611,14 @@

    Parameters

    -

    Performs a PUT (or POST if no UUID is found) on the UsergridEntity.

    +

    Performs a PUT (or POST if no UUID is found) on the UsergridEntity.

    Declaration

    Swift

    -
    public func save(client:UsergridClient, completion: UsergridResponseCompletion? = nil)
    +
    public func save(_ client:UsergridClient, completion: UsergridResponseCompletion? = nil)
    @@ -1658,9 +1661,9 @@

    Parameters

  • @@ -1668,14 +1671,14 @@

    Parameters

    -

    Performs a DELETE on the UsergridEntity using the shared instance of the UsergridClient.

    +

    Performs a DELETE on the UsergridEntity using the shared instance of the UsergridClient.

    Declaration

    Swift

    -
    public func remove(completion: UsergridResponseCompletion? = nil)
    +
    public func remove(_ completion: UsergridResponseCompletion? = nil)
    @@ -1705,9 +1708,9 @@

    Parameters

  • @@ -1715,14 +1718,14 @@

    Parameters

    -

    Performs a DELETE on the UsergridEntity.

    +

    Performs a DELETE on the UsergridEntity.

    Declaration

    Swift

    -
    public func remove(client:UsergridClient, completion: UsergridResponseCompletion? = nil)
    +
    public func remove(_ client:UsergridClient, completion: UsergridResponseCompletion? = nil)
    @@ -1776,9 +1779,9 @@

    Asset Management

  • @@ -1786,14 +1789,14 @@

    Asset Management

    -

    Uploads the given UsergridAsset and the data within it and creates an association between this UsergridEntity with the given UsergridAsset using the shared instance of UsergridClient.

    +

    Uploads the given UsergridAsset and the data within it and creates an association between this UsergridEntity with the given UsergridAsset using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public func uploadAsset(asset:UsergridAsset, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetUploadCompletion? = nil)
    +
    public func uploadAsset(_ asset:UsergridAsset, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetUploadCompletion? = nil)
    @@ -1849,9 +1852,9 @@

    Parameters

  • @@ -1859,14 +1862,14 @@

    Parameters

    -

    Uploads the given UsergridAsset and the data within it and creates an association between this UsergridEntity with the given UsergridAsset.

    +

    Uploads the given UsergridAsset and the data within it and creates an association between this UsergridEntity with the given UsergridAsset.

    Declaration

    Swift

    -
    public func uploadAsset(client:UsergridClient, asset:UsergridAsset, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetUploadCompletion? = nil)
    +
    public func uploadAsset(_ client:UsergridClient, asset:UsergridAsset, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetUploadCompletion? = nil)
    @@ -1935,9 +1938,9 @@

    Parameters

  • @@ -1945,14 +1948,14 @@

    Parameters

    -

    Downloads the UsergridAsset that is associated with this UsergridEntity using the shared instance of UsergridClient.

    +

    Downloads the UsergridAsset that is associated with this UsergridEntity using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public func downloadAsset(contentType:String, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetDownloadCompletion? = nil)
    +
    public func downloadAsset(_ contentType:String, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetDownloadCompletion? = nil)
    @@ -2008,9 +2011,9 @@

    Parameters

  • @@ -2018,14 +2021,14 @@

    Parameters

    -

    Downloads the UsergridAsset that is associated with this UsergridEntity.

    +

    Downloads the UsergridAsset that is associated with this UsergridEntity.

    Declaration

    Swift

    -
    public func downloadAsset(client:UsergridClient, contentType:String, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetDownloadCompletion? = nil)
    +
    public func downloadAsset(_ client:UsergridClient, contentType:String, progress:UsergridAssetRequestProgress? = nil, completion:UsergridAssetDownloadCompletion? = nil)
    @@ -2105,9 +2108,9 @@

    Connection Management

  • @@ -2115,14 +2118,14 @@

    Connection Management

    -

    Creates a relationship between this UsergridEntity and the given entity using the shared instance of UsergridClient.

    +

    Creates a relationship between this UsergridEntity and the given entity using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public func connect(relationship:String, toEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public func connect(_ relationship:String, toEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2178,9 +2181,9 @@

    Parameters

  • @@ -2188,14 +2191,14 @@

    Parameters

    -

    Creates a relationship between this UsergridEntity and the given entity.

    +

    Creates a relationship between this UsergridEntity and the given entity.

    Declaration

    Swift

    -
    public func connect(client:UsergridClient, relationship:String, toEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public func connect(_ client:UsergridClient, relationship:String, toEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2264,9 +2267,9 @@

    Parameters

  • @@ -2274,14 +2277,14 @@

    Parameters

    -

    Removes a relationship between this UsergridEntity and the given entity using the shared instance of UsergridClient.

    +

    Removes a relationship between this UsergridEntity and the given entity using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public func disconnect(relationship:String, fromEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public func disconnect(_ relationship:String, fromEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2337,9 +2340,9 @@

    Parameters

  • @@ -2347,14 +2350,14 @@

    Parameters

    -

    Removes a relationship between this UsergridEntity and the given entity.

    +

    Removes a relationship between this UsergridEntity and the given entity.

    Declaration

    Swift

    -
    public func disconnect(client:UsergridClient, relationship:String, fromEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    +
    public func disconnect(_ client:UsergridClient, relationship:String, fromEntity:UsergridEntity, completion: UsergridResponseCompletion? = nil)
    @@ -2423,9 +2426,9 @@

    Parameters

  • @@ -2433,14 +2436,14 @@

    Parameters

    -

    Gets the UsergridEntity objects, if any, which are connected via the relationship using the shared instance of UsergridClient.

    +

    Gets the UsergridEntity objects, if any, which are connected via the relationship using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public func getConnections(direction:UsergridDirection, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public func getConnections(_ direction:UsergridDirection, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -2509,9 +2512,9 @@

    Parameters

  • @@ -2519,14 +2522,14 @@

    Parameters

    -

    Gets the UsergridEntity objects, if any, which are connected via the relationship.

    +

    Gets the UsergridEntity objects, if any, which are connected via the relationship.

    Declaration

    Swift

    -
    public func getConnections(client:UsergridClient, direction:UsergridDirection, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public func getConnections(_ client:UsergridClient, direction:UsergridDirection, relationship:String, query:UsergridQuery? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -2629,14 +2632,14 @@

    Helper methods

    -

    Determines if the two UsergridEntity objects are equal. i.e. they have the same non nil uuidOrName.

    +

    Determines if the two UsergridEntity objects are equal. i.e. they have the same non nil uuidOrName.

    Declaration

    Swift

    -
    public func isEqualToEntity(entity: UsergridEntity?) -> Bool
    +
    public func isEqualToEntity(_ entity: UsergridEntity?) -> Bool
    @@ -2662,7 +2665,7 @@

    Parameters

    Return Value

    -

    If the two UsergridEntity objects are equal. i.e. they have the same non nil uuidOrName.

    +

    If the two UsergridEntity objects are equal. i.e. they have the same non nil uuidOrName.

  • @@ -2673,8 +2676,8 @@

    Return Value

  • diff --git a/docs/Classes/UsergridFileMetaData.html b/docs/Classes/UsergridFileMetaData.html index 1cc8ccf..b2cf994 100644 --- a/docs/Classes/UsergridFileMetaData.html +++ b/docs/Classes/UsergridFileMetaData.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -320,9 +323,9 @@

    Declaration

  • @@ -330,14 +333,14 @@

    Declaration

    -

    The NSDate object corresponding to the last modified time stamp.

    +

    The NSDate object corresponding to the last modified time stamp.

    Declaration

    Swift

    -
    public let lastModifiedDate: NSDate?
    +
    public let lastModifiedDate: Date?
    @@ -358,9 +361,9 @@

    Initialization

  • @@ -368,14 +371,14 @@

    Initialization

    -

    Designated initializer for UsergridFileMetaData objects.

    +

    Designated initializer for UsergridFileMetaData objects.

    Declaration

    Swift

    -
    public init(fileMetaDataJSON:[String:AnyObject])
    +
    public init(fileMetaDataJSON:[String:Any])
    @@ -401,7 +404,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridFileMetaData.

    +

    A new instance of UsergridFileMetaData.

  • @@ -464,7 +467,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridUser object.

    +

    A decoded UsergridFileMetaData object.

  • @@ -473,9 +476,9 @@

    Return Value

  • @@ -490,7 +493,7 @@

    Return Value

    Declaration

    Swift

    -
    public func encodeWithCoder(aCoder: NSCoder)
    +
    public func encode(with aCoder: NSCoder)
    @@ -522,8 +525,8 @@

    Parameters

  • diff --git a/docs/Classes/UsergridQuery.html b/docs/Classes/UsergridQuery.html index 5b8d3e5..1e1e8b5 100644 --- a/docs/Classes/UsergridQuery.html +++ b/docs/Classes/UsergridQuery.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -187,9 +190,9 @@

    Initialization

  • - + - init(_:) + init(_:)
    @@ -197,7 +200,7 @@

    Initialization

    -

    Desingated initializer for UsergridQuery objects.

    +

    Desingated initializer for UsergridQuery objects.

    @@ -230,7 +233,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridQuery.

    +

    A new instance of UsergridQuery.

    @@ -250,9 +253,9 @@

    NSCopying

  • @@ -267,7 +270,7 @@

    NSCopying

    Declaration

    Swift

    -
    public func copyWithZone(zone: NSZone) -> AnyObject
    +
    public func copy(with zone: NSZone?) -> Any
    @@ -313,9 +316,9 @@

    Building

  • @@ -330,7 +333,7 @@

    Building

    Declaration

    Swift

    -
    public func build(autoURLEncode: Bool = true) -> String
    +
    public func build(_ autoURLEncode: Bool = true) -> String
    @@ -393,7 +396,7 @@

    Builder Methods

    Declaration

    Swift

    -
    public func contains(term: String, value: String) -> Self { return self.containsWord(term, value: value) }
    +
    public func contains(_ term: String, value: String) -> Self
  • @@ -458,7 +461,7 @@

    Return Value

    Declaration

    Swift

    -
    public func containsString(term: String, value: String) -> Self { return self.containsWord(term, value: value) }
    +
    public func containsString(_ term: String, value: String) -> Self
  • @@ -523,7 +526,7 @@

    Return Value

    Declaration

    Swift

    -
    public func containsWord(term: String, value: String) -> Self { return self.addRequirement(term + UsergridQuery.SPACE + UsergridQuery.CONTAINS + UsergridQuery.SPACE + ((value.isUuid()) ? UsergridQuery.EMPTY_STRING : UsergridQuery.APOSTROPHE) + value + ((value.isUuid()) ? UsergridQuery.EMPTY_STRING : UsergridQuery.APOSTROPHE)) }
    +
    public func containsWord(_ term: String, value: String) -> Self
  • @@ -588,7 +591,7 @@

    Return Value

    Declaration

    Swift

    -
    public func ascending(term: String) -> Self { return self.asc(term) }
    +
    public func ascending(_ term: String) -> Self
  • @@ -640,7 +643,7 @@

    Return Value

    Declaration

    Swift

    -
    public func asc(term: String) -> Self { return self.sort(term, sortOrder: .Asc) }
    +
    public func asc(_ term: String) -> Self
  • @@ -692,7 +695,7 @@

    Return Value

    Declaration

    Swift

    -
    public func descending(term: String) -> Self { return self.desc(term) }
    +
    public func descending(_ term: String) -> Self
  • @@ -744,7 +747,7 @@

    Return Value

    Declaration

    Swift

    -
    public func desc(term: String) -> Self { return self.sort(term, sortOrder: .Desc) }
    +
    public func desc(_ term: String) -> Self
  • @@ -779,9 +782,9 @@

    Return Value

  • @@ -796,7 +799,7 @@

    Return Value

    Declaration

    Swift

    -
    public func filter(term: String, value: AnyObject) -> Self { return self.eq(term, value: value) }
    +
    public func filter(_ term: String, value: Any) -> Self
    @@ -844,9 +847,9 @@

    Return Value

  • @@ -861,7 +864,7 @@

    Return Value

    Declaration

    Swift

    -
    public func equals(term: String, value: AnyObject) -> Self { return self.eq(term, value: value) }
    +
    public func equals(_ term: String, value: Any) -> Self
    @@ -909,9 +912,9 @@

    Return Value

  • @@ -926,7 +929,7 @@

    Return Value

    Declaration

    Swift

    -
    public func eq(term: String, value: AnyObject) -> Self { return self.addOperationRequirement(term, operation:.Equal, value: value) }
    +
    public func eq(_ term: String, value: Any) -> Self
    @@ -974,9 +977,9 @@

    Return Value

  • @@ -991,7 +994,7 @@

    Return Value

    Declaration

    Swift

    -
    public func greaterThan(term: String, value: AnyObject) -> Self { return self.gt(term, value: value) }
    +
    public func greaterThan(_ term: String, value: Any) -> Self
    @@ -1039,9 +1042,9 @@

    Return Value

  • @@ -1056,7 +1059,7 @@

    Return Value

    Declaration

    Swift

    -
    public func gt(term: String, value: AnyObject) -> Self { return self.addOperationRequirement(term, operation:.GreaterThan, value: value) }
    +
    public func gt(_ term: String, value: Any) -> Self
    @@ -1104,9 +1107,9 @@

    Return Value

  • @@ -1121,7 +1124,7 @@

    Return Value

    Declaration

    Swift

    -
    public func greaterThanOrEqual(term: String, value: AnyObject) -> Self { return self.gte(term, value: value) }
    +
    public func greaterThanOrEqual(_ term: String, value: Any) -> Self
    @@ -1169,9 +1172,9 @@

    Return Value

  • @@ -1186,7 +1189,7 @@

    Return Value

    Declaration

    Swift

    -
    public func gte(term: String, value: AnyObject) -> Self { return self.addOperationRequirement(term, operation:.GreaterThanEqualTo, value: value) }
    +
    public func gte(_ term: String, value: Any) -> Self
    @@ -1234,9 +1237,9 @@

    Return Value

  • @@ -1251,7 +1254,7 @@

    Return Value

    Declaration

    Swift

    -
    public func lessThan(term: String, value: AnyObject) -> Self { return self.lt(term, value: value) }
    +
    public func lessThan(_ term: String, value: Any) -> Self
    @@ -1299,9 +1302,9 @@

    Return Value

  • @@ -1316,7 +1319,7 @@

    Return Value

    Declaration

    Swift

    -
    public func lt(term: String, value: AnyObject) -> Self { return self.addOperationRequirement(term, operation:.LessThan, value: value) }
    +
    public func lt(_ term: String, value: Any) -> Self
    @@ -1364,9 +1367,9 @@

    Return Value

  • @@ -1381,7 +1384,7 @@

    Return Value

    Declaration

    Swift

    -
    public func lessThanOrEqual(term: String, value: AnyObject) -> Self { return self.lte(term, value: value) }
    +
    public func lessThanOrEqual(_ term: String, value: Any) -> Self
    @@ -1429,9 +1432,9 @@

    Return Value

  • @@ -1446,7 +1449,7 @@

    Return Value

    Declaration

    Swift

    -
    public func lte(term: String, value: AnyObject) -> Self { return self.addOperationRequirement(term, operation:.LessThanEqualTo, value: value) }
    +
    public func lte(_ term: String, value: Any) -> Self
    @@ -1511,7 +1514,7 @@

    Return Value

    Declaration

    Swift

    -
    public func locationWithin(distance: Float, latitude: Float, longitude: Float) -> Self
    +
    public func locationWithin(_ distance: Float, latitude: Float, longitude: Float) -> Self
  • @@ -1685,7 +1688,7 @@

    Return Value

    Declaration

    Swift

    -
    public func sort(term: String, sortOrder: UsergridQuerySortOrder) -> Self
    +
    public func sort(_ term: String, sortOrder: UsergridQuerySortOrder) -> Self
  • @@ -1750,7 +1753,7 @@

    Return Value

    Declaration

    Swift

    -
    public func collection(collectionName: String) -> Self
    +
    public func collection(_ collectionName: String) -> Self
    @@ -1802,7 +1805,7 @@

    Return Value

    Declaration

    Swift

    -
    public func type(type: String) -> Self
    +
    public func type(_ type: String) -> Self
    @@ -1854,7 +1857,7 @@

    Return Value

    Declaration

    Swift

    -
    public func limit(limit: Int) -> Self
    +
    public func limit(_ limit: Int) -> Self
    @@ -1906,7 +1909,7 @@

    Return Value

    Declaration

    Swift

    -
    public func ql(value: String) -> Self
    +
    public func ql(_ value: String) -> Self
    @@ -1958,7 +1961,7 @@

    Return Value

    Declaration

    Swift

    -
    public func cursor(value: String?) -> Self
    +
    public func cursor(_ value: String?) -> Self
    @@ -2010,7 +2013,7 @@

    Return Value

    Declaration

    Swift

    -
    public func fromString(value: String?) -> Self
    +
    public func fromString(_ value: String?) -> Self
    @@ -2062,7 +2065,7 @@

    Return Value

    Declaration

    Swift

    -
    public func urlTerm(term: String, equalsValue: String) -> Self
    +
    public func urlTerm(_ term: String, equalsValue: String) -> Self
    @@ -2127,7 +2130,7 @@

    Return Value

    Declaration

    Swift

    -
    public func addOperationRequirement(term: String, operation: UsergridQueryOperator, stringValue: String) -> Self
    +
    public func addOperationRequirement(_ term: String, operation: UsergridQueryOperator, stringValue: String) -> Self
    @@ -2205,7 +2208,7 @@

    Return Value

    Declaration

    Swift

    -
    public func addOperationRequirement(term: String, operation: UsergridQueryOperator, intValue: Int) -> Self
    +
    public func addOperationRequirement(_ term: String, operation: UsergridQueryOperator, intValue: Int) -> Self
    @@ -2268,8 +2271,8 @@

    Return Value

    diff --git a/docs/Classes/UsergridRequest.html b/docs/Classes/UsergridRequest.html index 0405ff5..cd2cb62 100644 --- a/docs/Classes/UsergridRequest.html +++ b/docs/Classes/UsergridRequest.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -204,7 +207,7 @@

    Instance Properties

    Declaration

    Swift

    -
    public let method: UsergridHttpMethod
    +
    public let method: UsergridHttpMethod
    @@ -285,7 +288,7 @@

    Declaration

    Declaration

    Swift

    -
    public let query: UsergridQuery?
    +
    public let query: UsergridQuery?
    @@ -312,7 +315,7 @@

    Declaration

    Declaration

    Swift

    -
    public let auth: UsergridAuth?
    +
    public let auth: UsergridAuth?
    @@ -349,9 +352,9 @@

    Declaration

  • - + - jsonBody + jsonBody
    @@ -366,7 +369,7 @@

    Declaration

    Declaration

    Swift

    -
    public let jsonBody: AnyObject?
    +
    public let jsonBody: Any?
    @@ -414,9 +417,9 @@

    Initialization

  • - + - init(method:baseUrl:paths:query:auth:headers:jsonBody:queryParams:) + init(method:baseUrl:paths:query:auth:headers:jsonBody:queryParams:)
    @@ -424,20 +427,20 @@

    Initialization

    -

    The designated initializer for UsergridRequest objects.

    +

    The designated initializer for UsergridRequest objects.

    Declaration

    Swift

    -
    public init(method:UsergridHttpMethod,
    +                          
    public init(method:UsergridHttpMethod,
             baseUrl:String,
             paths:[String]? = nil,
    -        query:UsergridQuery? = nil,
    -        auth:UsergridAuth? = nil,
    +        query:UsergridQuery? = nil,
    +        auth:UsergridAuth? = nil,
             headers:[String:String]? = nil,
    -        jsonBody:AnyObject? = nil,
    +        jsonBody:Any? = nil,
             queryParams:[String:String]? = nil)
    @@ -555,7 +558,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridRequest.

    +

    A new instance of UsergridRequest.

    @@ -575,9 +578,9 @@

    Instance Methods

  • @@ -592,7 +595,7 @@

    Instance Methods

    Declaration

    Swift

    -
    public func buildNSURLRequest() -> NSURLRequest
    +
    public func buildNSURLRequest() -> URLRequest
    @@ -609,8 +612,8 @@

    Return Value

    diff --git a/docs/Classes/UsergridResponse.html b/docs/Classes/UsergridResponse.html index 6ff0433..a27e027 100644 --- a/docs/Classes/UsergridResponse.html +++ b/docs/Classes/UsergridResponse.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -206,7 +209,7 @@

    Instance Properties

    Declaration

    Swift

    -
    public weak var client: UsergridClient?
    +
    public weak var client: UsergridClient?
    @@ -216,9 +219,9 @@

    Declaration

  • @@ -233,7 +236,7 @@

    Declaration

    Declaration

    Swift

    -
    internal(set) public var responseJSON: [String:AnyObject]?
    +
    internal(set) public var responseJSON: [String:Any]?
    @@ -260,7 +263,7 @@

    Declaration

    Declaration

    Swift

    -
    internal(set) public var query: UsergridQuery?
    +
    internal(set) public var query: UsergridQuery?
    @@ -314,7 +317,7 @@

    Declaration

    Declaration

    Swift

    -
    internal(set) public var entities: [UsergridEntity]?
    +
    internal(set) public var entities: [UsergridEntity]?
    @@ -395,7 +398,7 @@

    Declaration

    Declaration

    Swift

    -
    internal(set) public var error: UsergridResponseError?
    +
    internal(set) public var error: UsergridResponseError?
    @@ -449,7 +452,7 @@

    Declaration

    Declaration

    Swift

    -
    public var count: Int { return self.entities?.count ?? 0 }
    +
    public var count: Int
    @@ -476,7 +479,7 @@

    Declaration

    Declaration

    Swift

    -
    public var first: UsergridEntity? { return self.entities?.first }
    +
    public var first: UsergridEntity?
    @@ -503,7 +506,7 @@

    Declaration

    Declaration

    Swift

    -
    public var last: UsergridEntity? { return self.entities?.last }
    +
    public var last: UsergridEntity?
    @@ -530,7 +533,7 @@

    Declaration

    Declaration

    Swift

    -
    public var entity: UsergridEntity? { return self.first }
    +
    public var entity: UsergridEntity?
    @@ -557,7 +560,7 @@

    Declaration

    Declaration

    Swift

    -
    public var user: UsergridUser? { return self.entities?.first as? UsergridUser }
    +
    public var user: UsergridUser?
    @@ -584,7 +587,7 @@

    Declaration

    Declaration

    Swift

    -
    public var users: [UsergridUser]? { return self.entities as? [UsergridUser] }
    +
    public var users: [UsergridUser]?
    @@ -611,7 +614,7 @@

    Declaration

    Declaration

    Swift

    -
    public var hasNextPage: Bool { return self.cursor != nil }
    +
    public var hasNextPage: Bool
    @@ -723,7 +726,7 @@

    Initialization

    -

    Designated initializer for UsergridResponse objects that contain errors.

    +

    Designated initializer for UsergridResponse objects that contain errors.

    These types of responses are usually created because request conditions are not met.

    @@ -732,7 +735,7 @@

    Initialization

    Declaration

    Swift

    -
    public init(client: UsergridClient?, errorName: String, errorDescription: String)
    +
    public init(client: UsergridClient?, errorName: String, errorDescription: String)
    @@ -784,7 +787,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridResponse.

    +

    A new instance of UsergridResponse.

    @@ -793,9 +796,9 @@

    Return Value

  • @@ -803,14 +806,14 @@

    Return Value

    -

    Designated initializer for UsergridResponse objects finished but still may contain errors.

    +

    Designated initializer for UsergridResponse objects finished but still may contain errors.

    Declaration

    Swift

    -
    public init(client:UsergridClient?, data:NSData?, response:NSHTTPURLResponse?, error:NSError?, query:UsergridQuery? = nil)
    +
    public init(client:UsergridClient?, data:Data?, response:HTTPURLResponse?, error:NSError?, query:UsergridQuery? = nil)
    @@ -888,7 +891,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridResponse.

    +

    A new instance of UsergridResponse.

    @@ -908,9 +911,9 @@

    Instance Methods

  • @@ -927,7 +930,7 @@

    Instance Methods

    Declaration

    Swift

    -
    public func loadNextPage(completion: UsergridResponseCompletion)
    +
    public func loadNextPage(_ completion: @escaping UsergridResponseCompletion)
    @@ -959,8 +962,8 @@

    Parameters

    diff --git a/docs/Classes/UsergridResponseError.html b/docs/Classes/UsergridResponseError.html index 46fd05a..4005dd7 100644 --- a/docs/Classes/UsergridResponseError.html +++ b/docs/Classes/UsergridResponseError.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -341,7 +344,7 @@

    Initialization

    -

    Designated initializer for UsergridResponseError.

    +

    Designated initializer for UsergridResponseError.

    @@ -364,7 +367,7 @@

    Parameters

    -

    The error’s name.

    +

    The error’s name.

    @@ -377,7 +380,7 @@

    Parameters

    -

    The error’s description.

    +

    The error’s description.

    @@ -400,7 +403,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridResponseError

    +

    A new instance of UsergridResponseError

    @@ -409,9 +412,9 @@

    Return Value

  • @@ -419,14 +422,14 @@

    Return Value

    -

    Convenience initializer for UsergridResponseError that determines if the given jsonDictionary contains an error.

    +

    Convenience initializer for UsergridResponseError that determines if the given jsonDictionary contains an error.

    Declaration

    Swift

    -
    public convenience init?(jsonDictionary:[String:AnyObject])
    +
    public convenience init?(jsonDictionary:[String:Any])
    @@ -452,7 +455,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridResponseError if the JSON dictionary did indeed contain error information.

    +

    A new instance of UsergridResponseError if the JSON dictionary did indeed contain error information.

    @@ -463,8 +466,8 @@

    Return Value

    diff --git a/docs/Classes/UsergridUser.html b/docs/Classes/UsergridUser.html index aa93547..0655f39 100644 --- a/docs/Classes/UsergridUser.html +++ b/docs/Classes/UsergridUser.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -165,7 +168,7 @@

    UsergridUser

    -
    public class UsergridUser : UsergridEntity
    +
    public class UsergridUser : UsergridEntity
    @@ -178,9 +181,9 @@

    UsergridUser

  • @@ -188,7 +191,7 @@

    UsergridUser

    -

    Subscript for the UsergridUser class.

    +

    Subscript for the UsergridUser class.

    Warning

    @@ -208,7 +211,7 @@

    UsergridUser

    Declaration

    Swift

    -
    override public subscript(propertyName: String) -> AnyObject?
    +
    override public subscript(propertyName: String) -> Any?
    @@ -246,7 +249,7 @@

    Instance Properties

    Declaration

    Swift

    -
    public var auth: UsergridUserAuth?
    +
    public var auth: UsergridUserAuth?
    @@ -266,9 +269,9 @@

    Declaration

    -

    Property helper method for the UsergridUser objects UsergridUserProperties.Name.

    +

    Property helper method for the UsergridUser objects UsergridUserProperties.Name.

    -

    Unlike UsergridEntity objects, UsergridUser’s can change their name property which is why we provide a getter here.

    +

    Unlike UsergridEntity objects, UsergridUser’s can change their name property which is why we provide a getter here.

    @@ -295,7 +298,7 @@

    Declaration

    -

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Username.

    +

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Username.

    @@ -322,7 +325,7 @@

    Declaration

    -

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Password.

    +

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Password.

    @@ -349,7 +352,7 @@

    Declaration

    -

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Email.

    +

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Email.

    @@ -376,7 +379,7 @@

    Declaration

    -

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Age.

    +

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Age.

    @@ -403,14 +406,14 @@

    Declaration

    -

    Property helper method to get the username or email of the UsergridUser.

    +

    Property helper method to get the username or email of the UsergridUser.

    Declaration

    Swift

    -
    public var usernameOrEmail: String? { return self.username ?? self.email }
    +
    public var usernameOrEmail: String?
    @@ -430,7 +433,7 @@

    Declaration

    -

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Activated.

    +

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Activated.

    Indicates whether the user account has been activated or not.

    @@ -459,7 +462,7 @@

    Declaration

    -

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Disabled.

    +

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Disabled.

    @@ -486,7 +489,7 @@

    Declaration

    -

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Picture.

    +

    Property getter and setter helpers for the UsergridUser objects UsergridUserProperties.Picture.

    URL path to user’s profile picture. Defaults to Gravatar for email address.

    @@ -522,7 +525,7 @@

    Declaration

    Declaration

    Swift

    -
    public var uuidOrUsername: String? { return self.uuid ?? self.username }
    +
    public var uuidOrUsername: String?
    @@ -553,7 +556,7 @@

    Initialization

    -

    Designated initializer for UsergridUser objects.

    +

    Designated initializer for UsergridUser objects.

    @@ -586,7 +589,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridUser.

    +

    A new instance of UsergridUser.

    @@ -595,9 +598,9 @@

    Return Value

  • @@ -612,7 +615,7 @@

    Return Value

    Declaration

    Swift

    -
    required public init(type: String, name: String?, propertyDict: [String : AnyObject]?)
    +
    required public init(type: String, name: String?, propertyDict: [String : Any]?)
    @@ -664,7 +667,7 @@

    Parameters

  • Return Value

    -

    A new UsergridUser object.

    +

    A new UsergridUser object.

    @@ -673,9 +676,9 @@

    Return Value

  • @@ -683,14 +686,14 @@

    Return Value

    -

    Designated initializer for UsergridUser objects.

    +

    Designated initializer for UsergridUser objects.

    Declaration

    Swift

    -
    public init(name:String,propertyDict:[String:AnyObject]? = nil)
    +
    public init(name:String,propertyDict:[String:Any]? = nil)
    @@ -729,7 +732,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridUser.

    +

    A new instance of UsergridUser.

  • @@ -748,7 +751,7 @@

    Return Value

    -

    Convenience initializer for UsergridUser objects.

    +

    Convenience initializer for UsergridUser objects.

    @@ -784,7 +787,7 @@

    Parameters

    -

    The user’s email.

    +

    The user’s email.

    @@ -797,7 +800,7 @@

    Parameters

    -

    The optional user’s password.

    +

    The optional user’s password.

    @@ -807,7 +810,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridUser.

    +

    A new instance of UsergridUser.

    @@ -826,7 +829,7 @@

    Return Value

    -

    Convenience initializer for UsergridUser objects.

    +

    Convenience initializer for UsergridUser objects.

    @@ -849,7 +852,7 @@

    Parameters

    -

    The user’s email.

    +

    The user’s email.

    @@ -862,7 +865,7 @@

    Parameters

    -

    The optional user’s password.

    +

    The optional user’s password.

    @@ -872,7 +875,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridUser.

    +

    A new instance of UsergridUser.

    @@ -891,7 +894,7 @@

    Return Value

    -

    Convenience initializer for UsergridUser objects.

    +

    Convenience initializer for UsergridUser objects.

    @@ -940,7 +943,7 @@

    Parameters

    -

    The optional user’s password.

    +

    The optional user’s password.

    @@ -950,7 +953,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridUser.

    +

    A new instance of UsergridUser.

    @@ -969,7 +972,7 @@

    Return Value

    -

    Convenience initializer for UsergridUser objects.

    +

    Convenience initializer for UsergridUser objects.

    @@ -1005,7 +1008,7 @@

    Parameters

    -

    The optional user’s password.

    +

    The optional user’s password.

    @@ -1015,7 +1018,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridUser.

    +

    A new instance of UsergridUser.

    @@ -1034,7 +1037,7 @@

    Return Value

    -

    Convenience initializer for UsergridUser objects.

    +

    Convenience initializer for UsergridUser objects.

    @@ -1070,7 +1073,7 @@

    Parameters

    -

    The optional user’s email.

    +

    The optional user’s email.

    @@ -1096,7 +1099,7 @@

    Parameters

    -

    The optional user’s password.

    +

    The optional user’s password.

    @@ -1106,7 +1109,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridUser.

    +

    A new instance of UsergridUser.

    @@ -1169,7 +1172,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridUser object.

    +

    A decoded UsergridUser object.

    @@ -1178,9 +1181,9 @@

    Return Value

  • @@ -1195,7 +1198,7 @@

    Return Value

    Declaration

    Swift

    -
    public override func encodeWithCoder(aCoder: NSCoder)
    +
    public override func encode(with aCoder: NSCoder)
    @@ -1236,9 +1239,9 @@

    Class Methods

  • @@ -1246,14 +1249,14 @@

    Class Methods

    -

    Checks the given email and/or username availablity for new UsergridUser objects using the shared instance of UsergridClient.

    +

    Checks the given email and/or username availablity for new UsergridUser objects using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public static func checkAvailable(email:String?, username:String?, completion:UsergridUserAvailabilityCompletion)
    +
    public static func checkAvailable(_ email:String?, username:String?, completion:@escaping UsergridUserAvailabilityCompletion)
    @@ -1309,9 +1312,9 @@

    Parameters

  • @@ -1319,14 +1322,14 @@

    Parameters

    -

    Checks the given email and/or username availablity for new UsergridUser objects using with the given UsergridClient.

    +

    Checks the given email and/or username availablity for new UsergridUser objects using with the given UsergridClient.

    Declaration

    Swift

    -
    public static func checkAvailable(client: UsergridClient, email:String?, username:String?, completion:UsergridUserAvailabilityCompletion)
    +
    public static func checkAvailable(_ client: UsergridClient, email:String?, username:String?, completion:@escaping UsergridUserAvailabilityCompletion)
    @@ -1406,9 +1409,9 @@

    Instance Methods

  • @@ -1423,7 +1426,7 @@

    Instance Methods

    Declaration

    Swift

    -
    public func create(completion: UsergridResponseCompletion? = nil)
    +
    public func create(_ completion: UsergridResponseCompletion? = nil)
    @@ -1453,9 +1456,9 @@

    Parameters

  • @@ -1470,7 +1473,7 @@

    Parameters

    Declaration

    Swift

    -
    public func create(client: UsergridClient, completion: UsergridResponseCompletion? = nil)
    +
    public func create(_ client: UsergridClient, completion: UsergridResponseCompletion? = nil)
    @@ -1513,9 +1516,9 @@

    Parameters

  • @@ -1532,7 +1535,7 @@

    Parameters

    Declaration

    Swift

    -
    public func login(username:String, password:String, completion: UsergridUserAuthCompletionBlock? = nil)
    +
    public func login(_ username:String, password:String, completion: UsergridUserAuthCompletionBlock? = nil)
    @@ -1588,9 +1591,9 @@

    Parameters

  • @@ -1607,7 +1610,7 @@

    Parameters

    Declaration

    Swift

    -
    public func login(client: UsergridClient, username:String, password:String, completion: UsergridUserAuthCompletionBlock? = nil)
    +
    public func login(_ client: UsergridClient, username:String, password:String, completion: UsergridUserAuthCompletionBlock? = nil)
    @@ -1676,9 +1679,9 @@

    Parameters

  • @@ -1693,7 +1696,7 @@

    Parameters

    Declaration

    Swift

    -
    public func resetPassword(old:String, new:String, completion:UsergridUserResetPasswordCompletion? = nil)
    +
    public func resetPassword(_ old:String, new:String, completion:UsergridUserResetPasswordCompletion? = nil)
    @@ -1749,9 +1752,9 @@

    Parameters

  • @@ -1766,7 +1769,7 @@

    Parameters

    Declaration

    Swift

    -
    public func resetPassword(client: UsergridClient, old:String, new:String, completion:UsergridUserResetPasswordCompletion? = nil)
    +
    public func resetPassword(_ client: UsergridClient, old:String, new:String, completion:UsergridUserResetPasswordCompletion? = nil)
    @@ -1835,9 +1838,9 @@

    Parameters

  • @@ -1852,7 +1855,7 @@

    Parameters

    Declaration

    Swift

    -
    public func reauthenticate(completion: UsergridUserAuthCompletionBlock? = nil)
    +
    public func reauthenticate(_ completion: UsergridUserAuthCompletionBlock? = nil)
    @@ -1882,9 +1885,9 @@

    Parameters

  • @@ -1899,7 +1902,7 @@

    Parameters

    Declaration

    Swift

    -
    public func reauthenticate(client: UsergridClient, completion: UsergridUserAuthCompletionBlock? = nil)
    +
    public func reauthenticate(_ client: UsergridClient, completion: UsergridUserAuthCompletionBlock? = nil)
    @@ -1942,9 +1945,9 @@

    Parameters

  • @@ -1959,7 +1962,7 @@

    Parameters

    Declaration

    Swift

    -
    public func logout(completion:UsergridResponseCompletion? = nil)
    +
    public func logout(_ completion:UsergridResponseCompletion? = nil)
    @@ -1989,9 +1992,9 @@

    Parameters

  • @@ -2006,7 +2009,7 @@

    Parameters

    Declaration

    Swift

    -
    public func logout(client: UsergridClient, completion:UsergridResponseCompletion? = nil)
    +
    public func logout(_ client: UsergridClient, completion:UsergridResponseCompletion? = nil)
    @@ -2049,9 +2052,9 @@

    Parameters

  • @@ -2059,14 +2062,14 @@

    Parameters

    -

    A special convenience function that connects a UsergridDevice to this UsergridUser using the shared instance of UsergridClient.

    +

    A special convenience function that connects a UsergridDevice to this UsergridUser using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public func connectToDevice(device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public func connectToDevice(_ device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -2109,9 +2112,9 @@

    Parameters

  • @@ -2119,14 +2122,14 @@

    Parameters

    -

    A special convenience function that connects a UsergridDevice to this UsergridUser.

    +

    A special convenience function that connects a UsergridDevice to this UsergridUser.

    Declaration

    Swift

    -
    public func connectToDevice(client:UsergridClient, device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public func connectToDevice(_ client:UsergridClient, device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -2182,9 +2185,9 @@

    Parameters

  • @@ -2199,7 +2202,7 @@

    Parameters

    Declaration

    Swift

    -
    public func getConnectedDevice(completion:UsergridResponseCompletion? = nil)
    +
    public func getConnectedDevice(_ completion:UsergridResponseCompletion? = nil)
    @@ -2229,9 +2232,9 @@

    Parameters

  • @@ -2246,7 +2249,7 @@

    Parameters

    Declaration

    Swift

    -
    public func getConnectedDevice(client:UsergridClient, completion:UsergridResponseCompletion? = nil)
    +
    public func getConnectedDevice(_ client:UsergridClient, completion:UsergridResponseCompletion? = nil)
    @@ -2289,9 +2292,9 @@

    Parameters

  • @@ -2299,14 +2302,14 @@

    Parameters

    -

    A special convenience function that disconnects a UsergridDevice from this UsergridUser using the shared instance of UsergridClient.

    +

    A special convenience function that disconnects a UsergridDevice from this UsergridUser using the shared instance of UsergridClient.

    Declaration

    Swift

    -
    public func disconnectFromDevice(device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public func disconnectFromDevice(_ device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -2349,9 +2352,9 @@

    Parameters

  • @@ -2359,14 +2362,14 @@

    Parameters

    -

    A special convenience function that disconnects a UsergridDevice from this UsergridUser.

    +

    A special convenience function that disconnects a UsergridDevice from this UsergridUser.

    Declaration

    Swift

    -
    public func disconnectFromDevice(client:UsergridClient, device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil)
    +
    public func disconnectFromDevice(_ client:UsergridClient, device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil)
    @@ -2424,8 +2427,8 @@

    Parameters

  • diff --git a/docs/Classes/UsergridUserAuth.html b/docs/Classes/UsergridUserAuth.html index 15b46fb..54eedfc 100644 --- a/docs/Classes/UsergridUserAuth.html +++ b/docs/Classes/UsergridUserAuth.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -165,7 +168,7 @@

    UsergridUserAuth

    -
    public class UsergridUserAuth : UsergridAuth
    +
    public class UsergridUserAuth : UsergridAuth
    @@ -233,7 +236,7 @@

    Initialization

    -

    Designated initializer for UsergridUserAuth objects.

    +

    Designated initializer for UsergridUserAuth objects.

    @@ -279,7 +282,7 @@

    Parameters

    Return Value

    -

    A new instance of UsergridUserAuth.

    +

    A new instance of UsergridUserAuth.

    @@ -342,7 +345,7 @@

    Parameters

    Return Value

    -

    A decoded UsergridUserAuth object.

    +

    A decoded UsergridUserAuth object.

  • @@ -351,9 +354,9 @@

    Return Value

  • @@ -368,7 +371,7 @@

    Return Value

    Declaration

    Swift

    -
    override public func encodeWithCoder(aCoder: NSCoder)
    +
    override public func encode(with aCoder: NSCoder)
    @@ -400,8 +403,8 @@

    Parameters

  • diff --git a/docs/Enums.html b/docs/Enums.html index 56fabb8..8bb90f3 100644 --- a/docs/Enums.html +++ b/docs/Enums.html @@ -13,12 +13,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -123,7 +123,10 @@ Extensions
  • @@ -425,8 +428,8 @@

    Declaration

    diff --git a/docs/Enums/UsergridAuthMode.html b/docs/Enums/UsergridAuthMode.html index 7ed672a..930b1ff 100644 --- a/docs/Enums/UsergridAuthMode.html +++ b/docs/Enums/UsergridAuthMode.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -178,9 +181,9 @@

    UsergridAuthMode

  • - - - None + + + none
    @@ -195,7 +198,7 @@

    UsergridAuthMode

    Declaration

    Swift

    -
    case None
    +
    case none
    @@ -209,9 +212,9 @@

    Declaration

  • - - - User + + + user
    @@ -228,7 +231,7 @@

    Declaration

    Declaration

    Swift

    -
    case User
    +
    case user
    @@ -242,9 +245,9 @@

    Declaration

  • - - - App + + + app
    @@ -261,7 +264,7 @@

    Declaration

    Declaration

    Swift

    -
    case App
    +
    case app
    @@ -273,8 +276,8 @@

    Declaration

    diff --git a/docs/Enums/UsergridDeviceProperties.html b/docs/Enums/UsergridDeviceProperties.html index a4736a3..615c9e2 100644 --- a/docs/Enums/UsergridDeviceProperties.html +++ b/docs/Enums/UsergridDeviceProperties.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -178,9 +181,9 @@

    UsergridDeviceProperties

  • - - - Model + + + model
    @@ -195,7 +198,7 @@

    UsergridDeviceProperties

    Declaration

    Swift

    -
    case Model
    +
    case model
    @@ -209,9 +212,9 @@

    Declaration

  • - - - Platform + + + platform
    @@ -226,7 +229,7 @@

    Declaration

    Declaration

    Swift

    -
    case Platform
    +
    case platform
    @@ -240,9 +243,9 @@

    Declaration

  • - - - OSVersion + + + osVersion
    @@ -257,7 +260,7 @@

    Declaration

    Declaration

    Swift

    -
    case OSVersion
    +
    case osVersion
    @@ -288,14 +291,14 @@

    Methods

    -

    Gets the corresponding UsergridDeviceProperties from a string if it’s valid.

    +

    Gets the corresponding UsergridDeviceProperties from a string if it’s valid.

    Declaration

    Swift

    -
    public static func fromString(stringValue: String) -> UsergridDeviceProperties?
    +
    public static func fromString(_ stringValue: String) -> UsergridDeviceProperties?
    @@ -321,7 +324,7 @@

    Parameters

    Return Value

    -

    The corresponding UsergridDeviceProperties or nil.

    +

    The corresponding UsergridDeviceProperties or nil.

    @@ -359,8 +362,8 @@

    Declaration

    diff --git a/docs/Enums/UsergridDirection.html b/docs/Enums/UsergridDirection.html index d11978c..54979e4 100644 --- a/docs/Enums/UsergridDirection.html +++ b/docs/Enums/UsergridDirection.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -178,9 +181,9 @@

    UsergridDirection

  • - - - In + + + in
    @@ -195,7 +198,7 @@

    UsergridDirection

    Declaration

    Swift

    -
    case In
    +
    case `in`
    @@ -209,9 +212,9 @@

    Declaration

  • - - - Out + + + out
    @@ -226,7 +229,7 @@

    Declaration

    Declaration

    Swift

    -
    case Out
    +
    case out
    @@ -276,8 +279,8 @@

    Declaration

    diff --git a/docs/Enums/UsergridEntityProperties.html b/docs/Enums/UsergridEntityProperties.html index b9b3278..c8e7d0e 100644 --- a/docs/Enums/UsergridEntityProperties.html +++ b/docs/Enums/UsergridEntityProperties.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -178,9 +181,9 @@

    UsergridEntityProperties

  • - - - EntityType + + + type
    @@ -195,7 +198,7 @@

    UsergridEntityProperties

    Declaration

    Swift

    -
    case EntityType
    +
    case type
    @@ -209,9 +212,9 @@

    Declaration

  • - - - UUID + + + uuid
    @@ -226,7 +229,7 @@

    Declaration

    Declaration

    Swift

    -
    case UUID
    +
    case uuid
    @@ -240,9 +243,9 @@

    Declaration

  • - - - Name + + + name
    @@ -257,7 +260,7 @@

    Declaration

    Declaration

    Swift

    -
    case Name
    +
    case name
    @@ -271,9 +274,9 @@

    Declaration

  • - - - Created + + + created
    @@ -288,7 +291,7 @@

    Declaration

    Declaration

    Swift

    -
    case Created
    +
    case created
    @@ -302,9 +305,9 @@

    Declaration

  • - - - Modified + + + modified
    @@ -319,7 +322,7 @@

    Declaration

    Declaration

    Swift

    -
    case Modified
    +
    case modified
    @@ -333,9 +336,9 @@

    Declaration

  • - - - Location + + + location
    @@ -350,7 +353,7 @@

    Declaration

    Declaration

    Swift

    -
    case Location
    +
    case location
    @@ -381,14 +384,14 @@

    Methods

    -

    Gets the corresponding UsergridEntityProperties from a string if it’s valid.

    +

    Gets the corresponding UsergridEntityProperties from a string if it’s valid.

    Declaration

    Swift

    -
    public static func fromString(stringValue: String) -> UsergridEntityProperties?
    +
    public static func fromString(_ stringValue: String) -> UsergridEntityProperties?
    @@ -414,7 +417,7 @@

    Parameters

    Return Value

    -

    The corresponding UsergridEntityProperties or nil.

    +

    The corresponding UsergridEntityProperties or nil.

    @@ -460,14 +463,14 @@

    Declaration

    -

    Determines if the UsergridEntityProperties is mutable for the given entity.

    +

    Determines if the UsergridEntityProperties is mutable for the given entity.

    Declaration

    Swift

    -
    public func isMutableForEntity(entity:UsergridEntity) -> Bool
    +
    public func isMutableForEntity(_ entity:UsergridEntity) -> Bool
    @@ -493,7 +496,7 @@

    Parameters

    Return Value

    -

    If the UsergridEntityProperties is mutable for the given entity

    +

    If the UsergridEntityProperties is mutable for the given entity

    @@ -504,8 +507,8 @@

    Return Value

    diff --git a/docs/Enums/UsergridHttpMethod.html b/docs/Enums/UsergridHttpMethod.html index 1ad6cbb..ae4d6ab 100644 --- a/docs/Enums/UsergridHttpMethod.html +++ b/docs/Enums/UsergridHttpMethod.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -178,9 +181,9 @@

    UsergridHttpMethod

  • - - - Get + + + get
    @@ -195,7 +198,7 @@

    UsergridHttpMethod

    Declaration

    Swift

    -
    case Get
    +
    case get
    @@ -209,9 +212,9 @@

    Declaration

  • - - - Put + + + put
    @@ -226,7 +229,7 @@

    Declaration

    Declaration

    Swift

    -
    case Put
    +
    case put
    @@ -240,9 +243,9 @@

    Declaration

  • - - - Post + + + post
    @@ -257,7 +260,7 @@

    Declaration

    Declaration

    Swift

    -
    case Post
    +
    case post
    @@ -271,9 +274,9 @@

    Declaration

  • - - - Delete + + + delete
    @@ -288,7 +291,7 @@

    Declaration

    Declaration

    Swift

    -
    case Delete
    +
    case delete
    @@ -331,8 +334,8 @@

    Declaration

    diff --git a/docs/Enums/UsergridImageContentType.html b/docs/Enums/UsergridImageContentType.html index 224450b..c490caf 100644 --- a/docs/Enums/UsergridImageContentType.html +++ b/docs/Enums/UsergridImageContentType.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -178,9 +181,9 @@

    UsergridImageContentType

  • - - - Png + + + png
    @@ -195,7 +198,7 @@

    UsergridImageContentType

    Declaration

    Swift

    -
    case Png
    +
    case png
    @@ -209,9 +212,9 @@

    Declaration

  • - - - Jpeg + + + jpeg
    @@ -226,7 +229,7 @@

    Declaration

    Declaration

    Swift

    -
    case Jpeg
    +
    case jpeg
    @@ -276,8 +279,8 @@

    Declaration

    diff --git a/docs/Enums/UsergridQueryOperator.html b/docs/Enums/UsergridQueryOperator.html index fc07091..c101a85 100644 --- a/docs/Enums/UsergridQueryOperator.html +++ b/docs/Enums/UsergridQueryOperator.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -178,9 +181,9 @@

    UsergridQueryOperator

  • - - - Equal + + + equal
    @@ -195,7 +198,7 @@

    UsergridQueryOperator

    Declaration

    Swift

    -
    case Equal
    +
    case equal
    @@ -209,9 +212,9 @@

    Declaration

  • - - - GreaterThan + + + greaterThan
    @@ -226,7 +229,7 @@

    Declaration

    Declaration

    Swift

    -
    case GreaterThan
    +
    case greaterThan
    @@ -240,9 +243,9 @@

    Declaration

  • @@ -257,7 +260,7 @@

    Declaration

    Declaration

    Swift

    -
    case GreaterThanEqualTo
    +
    case greaterThanEqualTo
    @@ -271,9 +274,9 @@

    Declaration

  • - - - LessThan + + + lessThan
    @@ -288,7 +291,7 @@

    Declaration

    Declaration

    Swift

    -
    case LessThan
    +
    case lessThan
    @@ -302,9 +305,9 @@

    Declaration

  • @@ -319,7 +322,7 @@

    Declaration

    Declaration

    Swift

    -
    case LessThanEqualTo
    +
    case lessThanEqualTo
    @@ -350,14 +353,14 @@

    Methods

    -

    Gets the corresponding UsergridQueryOperator from a string if it’s valid.

    +

    Gets the corresponding UsergridQueryOperator from a string if it’s valid.

    Declaration

    Swift

    -
    public static func fromString(stringValue: String) -> UsergridQueryOperator?
    +
    public static func fromString(_ stringValue: String) -> UsergridQueryOperator?
    @@ -383,7 +386,7 @@

    Parameters

    Return Value

    -

    The corresponding UsergridQueryOperator or nil.

    +

    The corresponding UsergridQueryOperator or nil.

    @@ -421,8 +424,8 @@

    Declaration

    diff --git a/docs/Enums/UsergridQuerySortOrder.html b/docs/Enums/UsergridQuerySortOrder.html index 3758d3f..796ece5 100644 --- a/docs/Enums/UsergridQuerySortOrder.html +++ b/docs/Enums/UsergridQuerySortOrder.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -178,9 +181,9 @@

    UsergridQuerySortOrder

  • - - - Asc + + + asc
    @@ -195,7 +198,7 @@

    UsergridQuerySortOrder

    Declaration

    Swift

    -
    case Asc
    +
    case asc
    @@ -209,9 +212,9 @@

    Declaration

  • - - - Desc + + + desc
    @@ -226,7 +229,7 @@

    Declaration

    Declaration

    Swift

    -
    case Desc
    +
    case desc
    @@ -257,14 +260,14 @@

    Methods

    -

    Gets the corresponding UsergridQuerySortOrder from a string if it’s valid.

    +

    Gets the corresponding UsergridQuerySortOrder from a string if it’s valid.

    Declaration

    Swift

    -
    public static func fromString(stringValue: String) -> UsergridQuerySortOrder?
    +
    public static func fromString(_ stringValue: String) -> UsergridQuerySortOrder?
    @@ -290,7 +293,7 @@

    Parameters

    Return Value

    -

    The corresponding UsergridQuerySortOrder or nil.

    +

    The corresponding UsergridQuerySortOrder or nil.

    @@ -328,8 +331,8 @@

    Declaration

    diff --git a/docs/Enums/UsergridUserProperties.html b/docs/Enums/UsergridUserProperties.html index eff2cdc..60a254f 100644 --- a/docs/Enums/UsergridUserProperties.html +++ b/docs/Enums/UsergridUserProperties.html @@ -14,12 +14,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -124,7 +124,10 @@ Extensions
  • @@ -178,9 +181,9 @@

    UsergridUserProperties

  • - - - Name + + + name
    @@ -195,7 +198,7 @@

    UsergridUserProperties

    Declaration

    Swift

    -
    case Name
    +
    case name
    @@ -209,9 +212,9 @@

    Declaration

  • - - - Username + + + username
    @@ -226,7 +229,7 @@

    Declaration

    Declaration

    Swift

    -
    case Username
    +
    case username
    @@ -240,9 +243,9 @@

    Declaration

  • - - - Password + + + password
    @@ -257,7 +260,7 @@

    Declaration

    Declaration

    Swift

    -
    case Password
    +
    case password
    @@ -271,9 +274,9 @@

    Declaration

  • - - - Email + + + email
    @@ -288,7 +291,7 @@

    Declaration

    Declaration

    Swift

    -
    case Email
    +
    case email
    @@ -302,9 +305,9 @@

    Declaration

  • - - - Age + + + age
    @@ -319,7 +322,7 @@

    Declaration

    Declaration

    Swift

    -
    case Age
    +
    case age
    @@ -333,9 +336,9 @@

    Declaration

  • - - - Activated + + + activated
    @@ -350,7 +353,7 @@

    Declaration

    Declaration

    Swift

    -
    case Activated
    +
    case activated
    @@ -364,9 +367,9 @@

    Declaration

  • - - - Disabled + + + disabled
    @@ -381,7 +384,7 @@

    Declaration

    Declaration

    Swift

    -
    case Disabled
    +
    case disabled
    @@ -395,9 +398,9 @@

    Declaration

  • - - - Picture + + + picture
    @@ -412,7 +415,7 @@

    Declaration

    Declaration

    Swift

    -
    case Picture
    +
    case picture
    @@ -443,14 +446,14 @@

    Methods

    -

    Gets the corresponding UsergridUserProperties from a string if it’s valid.

    +

    Gets the corresponding UsergridUserProperties from a string if it’s valid.

    Declaration

    Swift

    -
    public static func fromString(stringValue: String) -> UsergridUserProperties?
    +
    public static func fromString(_ stringValue: String) -> UsergridUserProperties?
    @@ -476,7 +479,7 @@

    Parameters

    Return Value

    -

    The corresponding UsergridUserProperties or nil.

    +

    The corresponding UsergridUserProperties or nil.

    @@ -514,8 +517,8 @@

    Declaration

    diff --git a/docs/Extensions.html b/docs/Extensions.html index a5c3fb5..bdc0bc6 100644 --- a/docs/Extensions.html +++ b/docs/Extensions.html @@ -13,12 +13,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -123,7 +123,10 @@ Extensions
  • @@ -171,9 +174,9 @@

    Extensions

  • @@ -183,7 +186,38 @@

    Extensions

    Undocumented

    - See more + See more +
    + +
    +
  • + + +
    +
      +
    • +
      + + + + Date + +
      +
      +
      +
      +
      +
      + + See more +
      +
      +

      Declaration

      +
      +

      Swift

      +
      struct Date : ReferenceConvertible, Comparable, Equatable
      + +
      @@ -193,8 +227,8 @@

      Extensions

    diff --git a/docs/Extensions/Date.html b/docs/Extensions/Date.html new file mode 100644 index 0000000..cdcc624 --- /dev/null +++ b/docs/Extensions/Date.html @@ -0,0 +1,456 @@ + + + + Date Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Date

    +
    +
    +
    struct Date : ReferenceConvertible, Comparable, Equatable
    + +
    +
    + +
    +
    +
    +
      +
    • +
      + + + + init(milliseconds:) + +
      +
      +
      +
      +
      +
      +

      Creates a new NSDate object with the given milliseconds.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public init(milliseconds: String)
      + +
      +
      +
      +

      Parameters

      + + + + + + + +
      + + milliseconds + + +
      +

      the milliseconds

      + +
      +
      +
      +
      +

      Return Value

      +

      A new NSDate object.

      + +
      +
      +
      +
    • +
    • +
      + + + + dateAsMilliseconds() + +
      +
      +
      +
      +
      +
      +

      Converts the NSDate object to milliseconds.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public func dateAsMilliseconds() -> Int
      + +
      +
      +
      +

      Return Value

      +

      The number of milliseconds corresponding to the date.

      + +
      +
      +
      +
    • +
    • + +
      +
      +
      +
      +
      +

      Converts the NSDate object to milliseconds and returns the value as a string.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public func dateAsMillisecondsString() -> String
      + +
      +
      +
      +

      Return Value

      +

      The number of milliseconds corresponding to the date as a string.

      + +
      +
      +
      +
    • +
    • + +
      +
      +
      +
      +
      +

      Converts the number of milliseconds to a string.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public static func stringFromMilleseconds(_ milliseconds:Int) -> String
      + +
      +
      +
      +

      Parameters

      + + + + + + + +
      + + milliseconds + + +
      +

      the milliseconds to convert

      + +
      +
      +
      +
      +

      Return Value

      +

      The milliseconds as a string.

      + +
      +
      +
      +
    • +
    • +
      + + + + unixTimeStampString() + +
      +
      +
      +
      +
      +
      +

      Converts the NSDate object to the corresponding UNIX time stamp as a string.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public static func unixTimeStampString() -> String
      + +
      +
      +
      +

      Return Value

      +

      The UNIX time stamp as a string.

      + +
      +
      +
      +
    • +
    • +
      + + + + unixTimeStamp() + +
      +
      +
      +
      +
      +
      +

      Converts the NSDate object to the corresponding UNIX time stamp.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public static func unixTimeStamp() -> Int
      + +
      +
      +
      +

      Return Value

      +

      The UNIX time stamp.

      + +
      +
      +
      +
    • +
    • +
      + + + + nowAsMilliseconds() + +
      +
      +
      +
      +
      +
      +

      Converts the current date to milliseconds.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public static func nowAsMilliseconds() -> Int
      + +
      +
      +
      +

      Return Value

      +

      The milliseconds of the current date.

      + +
      +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/docs/Extensions/UsergridSessionDelegate.html b/docs/Extensions/UsergridSessionDelegate.html new file mode 100644 index 0000000..0fc051e --- /dev/null +++ b/docs/Extensions/UsergridSessionDelegate.html @@ -0,0 +1,225 @@ + + + + UsergridSessionDelegate Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    + + + + diff --git a/docs/Global Variables.html b/docs/Global Variables.html index 2685313..c1c1cce 100644 --- a/docs/Global Variables.html +++ b/docs/Global Variables.html @@ -13,12 +13,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -123,7 +123,10 @@ Extensions @@ -188,7 +191,7 @@

    Global Variables

    Declaration

    Swift

    -
    public let UsergridSDKVersion = "2.1.1"
    +
    public let UsergridSDKVersion = "2.1.3"
    @@ -200,8 +203,8 @@

    Declaration

    diff --git a/docs/Typealiases.html b/docs/Typealiases.html index 4a5b04a..8b6b846 100644 --- a/docs/Typealiases.html +++ b/docs/Typealiases.html @@ -13,12 +13,12 @@
    -

    Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -123,7 +123,10 @@ Extensions @@ -188,7 +191,7 @@

    Typealiases

    Declaration

    Swift

    -
    public typealias UsergridAppAuthCompletionBlock = (auth:UsergridAppAuth?, error: UsergridResponseError?) -> Void
    +
    public typealias UsergridAppAuthCompletionBlock = (_ auth:UsergridAppAuth?, _ error: UsergridResponseError?) -> Void
    @@ -215,7 +218,7 @@

    Declaration

    Declaration

    Swift

    -
    public typealias UsergridUserAuthCompletionBlock = (auth:UsergridUserAuth?, user:UsergridUser?, error: UsergridResponseError?) -> Void
    +
    public typealias UsergridUserAuthCompletionBlock = (_ auth:UsergridUserAuth?, _ user:UsergridUser?, _ error: UsergridResponseError?) -> Void
    @@ -246,7 +249,7 @@

    Declaration

    Declaration

    Swift

    -
    public typealias UsergridUserAvailabilityCompletion = (error: UsergridResponseError?, available:Bool) -> Void
    +
    public typealias UsergridUserAvailabilityCompletion = (_ error: UsergridResponseError?, _ available:Bool) -> Void
    @@ -273,7 +276,7 @@

    Declaration

    Declaration

    Swift

    -
    public typealias UsergridUserResetPasswordCompletion = (error: UsergridResponseError?, didSucceed:Bool) -> Void
    +
    public typealias UsergridUserResetPasswordCompletion = (_ error: UsergridResponseError?, _ didSucceed:Bool) -> Void
    @@ -304,7 +307,7 @@

    Declaration

    Declaration

    Swift

    -
    public typealias UsergridResponseCompletion = (response: UsergridResponse) -> Void
    +
    public typealias UsergridResponseCompletion = (_ response: UsergridResponse) -> Void
    @@ -335,7 +338,7 @@

    Declaration

    Declaration

    Swift

    -
    public typealias UsergridAssetRequestProgress = (bytesFinished:Int64, bytesExpected: Int64) -> Void
    +
    public typealias UsergridAssetRequestProgress = (_ bytesFinished:Int64, _ bytesExpected: Int64) -> Void
    @@ -345,9 +348,9 @@

    Declaration

  • @@ -355,14 +358,14 @@

    Declaration

    -

    The completion block used in UsergridAsset are finished uploading.

    +

    The completion block used in UsergridAsset are finished downloading.

    Declaration

    Swift

    -
    public typealias UsergridAssetUploadCompletion = (asset:UsergridAsset?, response: UsergridResponse) -> Void
    +
    public typealias UsergridAssetDownloadCompletion = (_ asset:UsergridAsset?, _ error: UsergridResponseError?) -> Void
    @@ -372,9 +375,9 @@

    Declaration

  • @@ -382,14 +385,14 @@

    Declaration

    -

    The completion block used in UsergridAsset are finished downloading.

    +

    The completion block used in UsergridAsset are finished uploading.

    Declaration

    Swift

    -
    public typealias UsergridAssetDownloadCompletion = (asset:UsergridAsset?, error: UsergridResponseError?) -> Void
    +
    public typealias UsergridAssetUploadCompletion = (_ asset:UsergridAsset?, _ response: UsergridResponse) -> Void
    @@ -401,8 +404,8 @@

    Declaration

  • diff --git a/docs/css/jazzy.css b/docs/css/jazzy.css index 2a7da3a..d6d65b7 100644 --- a/docs/css/jazzy.css +++ b/docs/css/jazzy.css @@ -139,7 +139,8 @@ header { .nav-group-task { font-size: 0.9em; - list-style-type: none; } + list-style-type: none; + white-space: nowrap; } .nav-group-task a { color: #888; } diff --git a/docs/docsets/UsergridSDK.docset/Contents/Info.plist b/docs/docsets/UsergridSDK.docset/Contents/Info.plist index 66e4f3b..9b0553f 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Info.plist +++ b/docs/docsets/UsergridSDK.docset/Contents/Info.plist @@ -7,7 +7,7 @@ CFBundleName UsergridSDK DocSetPlatformFamily - jazzy + usergridsdk isDashDocset dashIndexFilePath diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes.html index c867dcf..9715914 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes.html @@ -13,7 +13,7 @@
    -

    UsergridSDK Docs (100% documented)

    +

    UsergridSDK Docs

    @@ -91,7 +91,7 @@ Enums
  • +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • Example usage: - -let uuid = usergridDevice["uuid"] -

  • +

  • Example usage:

    +
    let uuid = usergridDevice[uuid]
    +
  • @@ -753,7 +752,7 @@

    Return Value

    diff --git a/docs/Classes/UsergridEntity.html b/docs/Classes/UsergridEntity.html index ebee850..b4dd2e4 100644 --- a/docs/Classes/UsergridEntity.html +++ b/docs/Classes/UsergridEntity.html @@ -193,11 +193,10 @@

    UsergridEntity

    Subscript for the UsergridEntity class.

      -
    • Example usage: - -let propertyValue = usergridEntity["propertyName"] -usergridEntity["propertyName"] = propertyValue -
    • +
    • Example usage:

      +
      let propertyValue = usergridEntity["propertyName"]
      +usergridEntity["propertyName"] = propertyValue
      +
    @@ -2673,7 +2672,7 @@

    Return Value

    diff --git a/docs/Classes/UsergridFileMetaData.html b/docs/Classes/UsergridFileMetaData.html index 06c1b30..f7b425c 100644 --- a/docs/Classes/UsergridFileMetaData.html +++ b/docs/Classes/UsergridFileMetaData.html @@ -522,7 +522,7 @@

    Parameters

    diff --git a/docs/Classes/UsergridQuery.html b/docs/Classes/UsergridQuery.html index cff0664..d52aa09 100644 --- a/docs/Classes/UsergridQuery.html +++ b/docs/Classes/UsergridQuery.html @@ -2268,7 +2268,7 @@

    Return Value

    diff --git a/docs/Classes/UsergridRequest.html b/docs/Classes/UsergridRequest.html index da9397c..8a730f7 100644 --- a/docs/Classes/UsergridRequest.html +++ b/docs/Classes/UsergridRequest.html @@ -609,7 +609,7 @@

    Return Value

    diff --git a/docs/Classes/UsergridResponse.html b/docs/Classes/UsergridResponse.html index 22979b1..6a17ec3 100644 --- a/docs/Classes/UsergridResponse.html +++ b/docs/Classes/UsergridResponse.html @@ -959,7 +959,7 @@

    Parameters

    diff --git a/docs/Classes/UsergridResponseError.html b/docs/Classes/UsergridResponseError.html index 65d6caf..7b74908 100644 --- a/docs/Classes/UsergridResponseError.html +++ b/docs/Classes/UsergridResponseError.html @@ -463,7 +463,7 @@

    Return Value

    diff --git a/docs/Classes/UsergridUser.html b/docs/Classes/UsergridUser.html index ef60d0a..3149f0b 100644 --- a/docs/Classes/UsergridUser.html +++ b/docs/Classes/UsergridUser.html @@ -196,12 +196,10 @@

    UsergridUser

    -

  • Example usage: -“` -let someName = usergridUser[name]

  • - -

    usergridUser[name] = someName -”`

    +

  • Example usage:

    +
    let someName = usergridUser[name]
    +usergridUser[name] = someName
    +
  • @@ -2424,7 +2422,7 @@

    Parameters

    diff --git a/docs/Classes/UsergridUserAuth.html b/docs/Classes/UsergridUserAuth.html index 176627d..be0c511 100644 --- a/docs/Classes/UsergridUserAuth.html +++ b/docs/Classes/UsergridUserAuth.html @@ -400,7 +400,7 @@

    Parameters

    diff --git a/docs/Enums.html b/docs/Enums.html index e3e86ed..10490e8 100644 --- a/docs/Enums.html +++ b/docs/Enums.html @@ -425,7 +425,7 @@

    Declaration

    diff --git a/docs/Enums/UsergridAuthMode.html b/docs/Enums/UsergridAuthMode.html index d010afe..8080739 100644 --- a/docs/Enums/UsergridAuthMode.html +++ b/docs/Enums/UsergridAuthMode.html @@ -273,7 +273,7 @@

    Declaration

    diff --git a/docs/Enums/UsergridDeviceProperties.html b/docs/Enums/UsergridDeviceProperties.html index 447441d..ea84b91 100644 --- a/docs/Enums/UsergridDeviceProperties.html +++ b/docs/Enums/UsergridDeviceProperties.html @@ -359,7 +359,7 @@

    Declaration

    diff --git a/docs/Enums/UsergridDirection.html b/docs/Enums/UsergridDirection.html index 1f1795d..9f89231 100644 --- a/docs/Enums/UsergridDirection.html +++ b/docs/Enums/UsergridDirection.html @@ -276,7 +276,7 @@

    Declaration

    diff --git a/docs/Enums/UsergridEntityProperties.html b/docs/Enums/UsergridEntityProperties.html index 2ba7a54..ebae710 100644 --- a/docs/Enums/UsergridEntityProperties.html +++ b/docs/Enums/UsergridEntityProperties.html @@ -504,7 +504,7 @@

    Return Value

    diff --git a/docs/Enums/UsergridHttpMethod.html b/docs/Enums/UsergridHttpMethod.html index 4655958..e1d8770 100644 --- a/docs/Enums/UsergridHttpMethod.html +++ b/docs/Enums/UsergridHttpMethod.html @@ -331,7 +331,7 @@

    Declaration

    diff --git a/docs/Enums/UsergridImageContentType.html b/docs/Enums/UsergridImageContentType.html index 2c8dad0..f50b627 100644 --- a/docs/Enums/UsergridImageContentType.html +++ b/docs/Enums/UsergridImageContentType.html @@ -276,7 +276,7 @@

    Declaration

    diff --git a/docs/Enums/UsergridQueryOperator.html b/docs/Enums/UsergridQueryOperator.html index c50a227..4fc4993 100644 --- a/docs/Enums/UsergridQueryOperator.html +++ b/docs/Enums/UsergridQueryOperator.html @@ -421,7 +421,7 @@

    Declaration

    diff --git a/docs/Enums/UsergridQuerySortOrder.html b/docs/Enums/UsergridQuerySortOrder.html index 65ca928..c5b1561 100644 --- a/docs/Enums/UsergridQuerySortOrder.html +++ b/docs/Enums/UsergridQuerySortOrder.html @@ -328,7 +328,7 @@

    Declaration

    diff --git a/docs/Enums/UsergridUserProperties.html b/docs/Enums/UsergridUserProperties.html index 8885333..36a4943 100644 --- a/docs/Enums/UsergridUserProperties.html +++ b/docs/Enums/UsergridUserProperties.html @@ -514,7 +514,7 @@

    Declaration

    diff --git a/docs/Extensions.html b/docs/Extensions.html index 3e1818f..1a9d96f 100644 --- a/docs/Extensions.html +++ b/docs/Extensions.html @@ -200,7 +200,7 @@

    Declaration

    diff --git a/docs/Extensions/Date.html b/docs/Extensions/Date.html index d6d6815..90257ae 100644 --- a/docs/Extensions/Date.html +++ b/docs/Extensions/Date.html @@ -443,7 +443,7 @@

    Return Value

    diff --git a/docs/Global Variables.html b/docs/Global Variables.html index 4d410b1..1ca08e5 100644 --- a/docs/Global Variables.html +++ b/docs/Global Variables.html @@ -200,7 +200,7 @@

    Declaration

    diff --git a/docs/Typealiases.html b/docs/Typealiases.html index f51dbf4..1715af9 100644 --- a/docs/Typealiases.html +++ b/docs/Typealiases.html @@ -401,7 +401,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes.html index 518f295..6f522f6 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes.html @@ -692,7 +692,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/Usergrid.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/Usergrid.html index 7c3b442..5d4da2c 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/Usergrid.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/Usergrid.html @@ -3788,7 +3788,7 @@

    Parameters

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAppAuth.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAppAuth.html index 3bdee26..6581915 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAppAuth.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAppAuth.html @@ -400,7 +400,7 @@

    Parameters

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAsset.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAsset.html index 7537733..c86dc64 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAsset.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAsset.html @@ -692,7 +692,7 @@

    Parameters

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAssetUploadRequest.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAssetUploadRequest.html index 86dd423..eed476a 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAssetUploadRequest.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAssetUploadRequest.html @@ -346,7 +346,7 @@

    Return Value

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAuth.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAuth.html index 8728ff4..01a35d6 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAuth.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridAuth.html @@ -548,7 +548,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridClient.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridClient.html index e856a49..6c70da7 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridClient.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridClient.html @@ -3928,7 +3928,7 @@

    Parameters

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridClientConfig.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridClientConfig.html index 883c532..5f3b3be 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridClientConfig.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridClientConfig.html @@ -734,7 +734,7 @@

    Parameters

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridDevice.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridDevice.html index 93bde4f..0a26b76 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridDevice.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridDevice.html @@ -198,10 +198,9 @@

    UsergridDevice

    -

  • Example usage: - -let uuid = usergridDevice["uuid"] -

  • +

  • Example usage:

    +
    let uuid = usergridDevice[uuid]
    +
  • @@ -753,7 +752,7 @@

    Return Value

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridEntity.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridEntity.html index ebee850..b4dd2e4 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridEntity.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridEntity.html @@ -193,11 +193,10 @@

    UsergridEntity

    Subscript for the UsergridEntity class.

      -
    • Example usage: - -let propertyValue = usergridEntity["propertyName"] -usergridEntity["propertyName"] = propertyValue -
    • +
    • Example usage:

      +
      let propertyValue = usergridEntity["propertyName"]
      +usergridEntity["propertyName"] = propertyValue
      +
    @@ -2673,7 +2672,7 @@

    Return Value

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridFileMetaData.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridFileMetaData.html index 06c1b30..f7b425c 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridFileMetaData.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridFileMetaData.html @@ -522,7 +522,7 @@

    Parameters

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridQuery.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridQuery.html index cff0664..d52aa09 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridQuery.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridQuery.html @@ -2268,7 +2268,7 @@

    Return Value

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridRequest.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridRequest.html index da9397c..8a730f7 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridRequest.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridRequest.html @@ -609,7 +609,7 @@

    Return Value

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridResponse.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridResponse.html index 22979b1..6a17ec3 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridResponse.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridResponse.html @@ -959,7 +959,7 @@

    Parameters

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridResponseError.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridResponseError.html index 65d6caf..7b74908 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridResponseError.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridResponseError.html @@ -463,7 +463,7 @@

    Return Value

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridUser.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridUser.html index ef60d0a..3149f0b 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridUser.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridUser.html @@ -196,12 +196,10 @@

    UsergridUser

    -

  • Example usage: -“` -let someName = usergridUser[name]

  • - -

    usergridUser[name] = someName -”`

    +

  • Example usage:

    +
    let someName = usergridUser[name]
    +usergridUser[name] = someName
    +
  • @@ -2424,7 +2422,7 @@

    Parameters

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridUserAuth.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridUserAuth.html index 176627d..be0c511 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridUserAuth.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Classes/UsergridUserAuth.html @@ -400,7 +400,7 @@

    Parameters

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums.html index e3e86ed..10490e8 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums.html @@ -425,7 +425,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridAuthMode.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridAuthMode.html index d010afe..8080739 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridAuthMode.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridAuthMode.html @@ -273,7 +273,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridDeviceProperties.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridDeviceProperties.html index 447441d..ea84b91 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridDeviceProperties.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridDeviceProperties.html @@ -359,7 +359,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridDirection.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridDirection.html index 1f1795d..9f89231 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridDirection.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridDirection.html @@ -276,7 +276,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridEntityProperties.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridEntityProperties.html index 2ba7a54..ebae710 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridEntityProperties.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridEntityProperties.html @@ -504,7 +504,7 @@

    Return Value

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridHttpMethod.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridHttpMethod.html index 4655958..e1d8770 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridHttpMethod.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridHttpMethod.html @@ -331,7 +331,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridImageContentType.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridImageContentType.html index 2c8dad0..f50b627 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridImageContentType.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridImageContentType.html @@ -276,7 +276,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridQueryOperator.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridQueryOperator.html index c50a227..4fc4993 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridQueryOperator.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridQueryOperator.html @@ -421,7 +421,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridQuerySortOrder.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridQuerySortOrder.html index 65ca928..c5b1561 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridQuerySortOrder.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridQuerySortOrder.html @@ -328,7 +328,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridUserProperties.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridUserProperties.html index 8885333..36a4943 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridUserProperties.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Enums/UsergridUserProperties.html @@ -514,7 +514,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions.html index 3e1818f..1a9d96f 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions.html @@ -200,7 +200,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions/Date.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions/Date.html index d6d6815..90257ae 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions/Date.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Extensions/Date.html @@ -443,7 +443,7 @@

    Return Value

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Global Variables.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Global Variables.html index 4d410b1..1ca08e5 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Global Variables.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Global Variables.html @@ -200,7 +200,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Typealiases.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Typealiases.html index f51dbf4..1715af9 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Typealiases.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/Typealiases.html @@ -401,7 +401,7 @@

    Declaration

    diff --git a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/index.html b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/index.html index d82a98c..3340ec3 100644 --- a/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/UsergridSDK.docset/Contents/Resources/Documents/index.html @@ -928,7 +928,7 @@ diff --git a/docs/docsets/UsergridSDK.tgz b/docs/docsets/UsergridSDK.tgz index e13503d2ac7c627112a6d0a872f52f7f2da85c13..e04e395e07847a649de1d962c1ae632ebd8e1f77 100644 GIT binary patch delta 126967 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 z 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

    1?iqyvrA9mYEtlF4FH|^@%SCV5yTM^BHTDB z{~V|#sAt_%zpw?4%O8Chn}h5K){?d9QtP;zs6bIXEr{j%OD~^s2e}+dL&{r0?iUI0 zhl6_s7Tp4Bqnd?4)7zBD0$ oIxpo(OhUQh-b7vz|9s-wT1&Q)0Lm$!g=jX4F|1 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

    {Uw8 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 diff --git a/docs/index.html b/docs/index.html index d82a98c..3340ec3 100644 --- a/docs/index.html +++ b/docs/index.html @@ -928,7 +928,7 @@

    From 411d13b504f2d6adc6f360b52418ee6a593744d6 Mon Sep 17 00:00:00 2001 From: Robert Walsh Date: Wed, 15 Feb 2017 14:34:55 -0600 Subject: [PATCH 6/8] Fixing tests to work with new API url --- Source/UsergridKeychainHelpers.swift | 4 ++ Source/UsergridRequestManager.swift | 1 + Tests/ASSET_Tests.swift | 23 ++++---- Tests/AUTH_Tests.swift | 40 +++----------- Tests/CONNECTION_Tests.swift | 32 +++++------ Tests/ClientCreationTests.swift | 46 ++++++---------- Tests/GET_Tests.swift | 50 +++++++++++++---- Tests/Info.plist | 2 + Tests/PUT_Tests.swift | 77 ++++++++++++++------------- Tests/TestSetup.swift | 38 +++++++++++++ Tests/User_Tests.swift | 8 +-- UsergridSDK.xcodeproj/project.pbxproj | 14 ++++- 12 files changed, 192 insertions(+), 143 deletions(-) create mode 100644 Tests/TestSetup.swift diff --git a/Source/UsergridKeychainHelpers.swift b/Source/UsergridKeychainHelpers.swift index b363a7f..e1963cb 100644 --- a/Source/UsergridKeychainHelpers.swift +++ b/Source/UsergridKeychainHelpers.swift @@ -93,6 +93,10 @@ internal extension UsergridDevice { static func saveSharedDeviceKeychainItem(_ device:UsergridDevice) { + if (NSClassFromString("XCTest") != nil) { + return + } + var queryAttributes = UsergridDevice.deviceKeychainItem() queryAttributes[kSecReturnData as String] = (kCFBooleanTrue != nil) as Bool queryAttributes[kSecReturnAttributes as String] = (kCFBooleanTrue != nil) as Bool diff --git a/Source/UsergridRequestManager.swift b/Source/UsergridRequestManager.swift index a876f81..dbb00ae 100644 --- a/Source/UsergridRequestManager.swift +++ b/Source/UsergridRequestManager.swift @@ -40,6 +40,7 @@ final class UsergridRequestManager { self.client = client let config = URLSessionConfiguration.default + config.httpMaximumConnectionsPerHost = 20 #if os(tvOS) config.httpAdditionalHeaders = ["User-Agent": "usergrid-tvOS/v\(UsergridSDKVersion)"] diff --git a/Tests/ASSET_Tests.swift b/Tests/ASSET_Tests.swift index 0bbeb92..1250ca1 100644 --- a/Tests/ASSET_Tests.swift +++ b/Tests/ASSET_Tests.swift @@ -30,20 +30,18 @@ import Foundation class ASSET_Tests: XCTestCase { - static let collectionName = "books" - static let entityUUID = "f4078aca-2fb1-11e5-8eb2-e13f8369aad1" + static let collectionName = "assetTestEntities" static let pngLocation = "TestAssets/test.png" static let jpgLocation = "TestAssets/UsergridGuy.jpg" static let imageName = "test" override func setUp() { super.setUp() - Usergrid.initSharedInstance(orgId:ClientCreationTests.orgId, appId: ClientCreationTests.appId) - Usergrid.persistCurrentUserInKeychain = false + Usergrid.authMode = .none } override func tearDown() { - Usergrid._sharedClient = nil + Usergrid.authMode = .user super.tearDown() } @@ -79,7 +77,7 @@ class ASSET_Tests: XCTestCase { } func test_IMAGE_UPLOAD() { - let getExpect = self.expectation(description: "\(#function)") + let expect = self.expectation(description: "\(#function)") let uploadProgress : UsergridAssetRequestProgress = { (bytes,expected) in print("UPLOAD PROGRESS BLOCK: BYTES:\(bytes) --- EXPECTED:\(expected)") } @@ -87,7 +85,7 @@ class ASSET_Tests: XCTestCase { print("DOWNLOAD PROGRESS BLOCK: BYTES:\(bytes) --- EXPECTED:\(expected)") } - Usergrid.GET(ASSET_Tests.collectionName, uuidOrName:ASSET_Tests.entityUUID) { (response) in + Usergrid.POST(UsergridEntity(type:ASSET_Tests.collectionName)) { response in XCTAssertTrue(Thread.isMainThread) let entity = response.first! @@ -129,21 +127,28 @@ class ASSET_Tests: XCTestCase { let downloadedImage = UIImage(data: downloadedAsset!.data) XCTAssertEqual(UIImagePNGRepresentation(localImage!), UIImagePNGRepresentation(downloadedImage!)) XCTAssertNotNil(downloadedImage) - getExpect.fulfill() + + Usergrid.DELETE(entity) { response in + XCTAssertTrue(response.ok) + XCTAssertEqual(response.entity?.uuid, entity.uuid) + + expect.fulfill() + } } } + } self.waitForExpectations(timeout: 100, handler: nil) } func deleteUser(_ user:UsergridUser,expectation:XCTestExpectation) { + Usergrid._sharedClient.currentUser = nil user.remove() { removeResponse in XCTAssertTrue(Thread.isMainThread) XCTAssertNotNil(removeResponse) XCTAssertTrue(removeResponse.ok) XCTAssertNotNil(removeResponse.user) XCTAssertNotNil(removeResponse.users) - print(removeResponse.error) expectation.fulfill() } } diff --git a/Tests/AUTH_Tests.swift b/Tests/AUTH_Tests.swift index d77bcae..00cf4aa 100644 --- a/Tests/AUTH_Tests.swift +++ b/Tests/AUTH_Tests.swift @@ -29,54 +29,30 @@ import XCTest class AUTH_Tests: XCTestCase { - var appAuth: UsergridAppAuth! - var userAuth: UsergridUserAuth! - - fileprivate static let collectionName = "publicevent" - fileprivate static let entityUUID = "fa015eaa-fe1c-11e3-b94b-63b29addea01" - - override func setUp() { - super.setUp() - appAuth = UsergridAppAuth(clientId: "b3U6THNcevskEeOQZLcUROUUVA", clientSecret: "b3U6RZHYznP28xieBzQPackFPmmnevU") - userAuth = UsergridUserAuth(username: "username", password: "password") - Usergrid.initSharedInstance(orgId:ClientCreationTests.orgId, appId: "sdk.demo") - } - - override func tearDown() { - Usergrid._sharedClient = nil - super.tearDown() - } - func test_CLIENT_AUTH() { let authExpect = self.expectation(description: "\(#function)") + Usergrid.authMode = .app + let appAuth = UsergridAppAuth(clientId: "YXA6-zvnTdLWEeaGGwrYgfQDvw", clientSecret: "YXA64tQ5qQAW_IZYUAOn_tDRKz0HrAU") + Usergrid.authenticateApp(appAuth) { auth,error in XCTAssertTrue(Thread.isMainThread) XCTAssertNil(error) XCTAssertNotNil(Usergrid.appAuth) if let appAuth = Usergrid.appAuth { - XCTAssertNotNil(appAuth.accessToken) XCTAssertNotNil(appAuth.expiry) XCTAssertNotNil(appAuth.isValid) - - Usergrid.GET(AUTH_Tests.collectionName) { (response) in - XCTAssertTrue(Thread.isMainThread) - XCTAssertNotNil(response) - XCTAssertTrue(response.hasNextPage) - XCTAssertEqual(response.entities!.count, 10) - XCTAssertEqual(response.first!.type, AUTH_Tests.collectionName) - - authExpect.fulfill() - } } + authExpect.fulfill() } - self.waitForExpectations(timeout: 100, handler: nil) + self.waitForExpectations(timeout: 1000, handler: nil) } func test_DESTROY_AUTH() { + let auth = UsergridAuth(accessToken: "YWMt91Q2YtWaEeW_Ki2uDueMEwAAAVMUTVSPeOdX-oradxdqirEFz5cPU3GWybs") XCTAssertTrue(auth.isValid) @@ -92,6 +68,7 @@ class AUTH_Tests: XCTestCase { func test_APP_AUTH_NSCODING() { + let appAuth = UsergridAppAuth(clientId: "YXA6-zvnTdLWEeaGGwrYgfQDvw", clientSecret: "YXA64tQ5qQAW_IZYUAOn_tDRKz0HrAU") appAuth.accessToken = "YWMt91Q2YtWaEeW_Ki2uDueMEwAAAVMUTVSPeOdX-oradxdqirEFz5cPU3GWybs" appAuth.expiry = Date.distantFuture @@ -111,6 +88,7 @@ class AUTH_Tests: XCTestCase { func test_USER_AUTH_NSCODING() { + let userAuth: UsergridUserAuth = UsergridUserAuth(username: "username", password: "password") userAuth.accessToken = "YWMt91Q2YtWaEeW_Ki2uDueMEwAAAVMUTVSPeOdX-oradxdqirEFz5cPU3GWybs" userAuth.expiry = Date.distantFuture @@ -127,6 +105,4 @@ class AUTH_Tests: XCTestCase { XCTAssertEqual(userAuth.expiry,newInstance.expiry) } } - - } diff --git a/Tests/CONNECTION_Tests.swift b/Tests/CONNECTION_Tests.swift index e824088..a5b24a4 100644 --- a/Tests/CONNECTION_Tests.swift +++ b/Tests/CONNECTION_Tests.swift @@ -29,18 +29,14 @@ import XCTest class CONNECTION_Tests: XCTestCase { - let clientAuth = UsergridAppAuth(clientId: "b3U6THNcevskEeOQZLcUROUUVA", clientSecret: "b3U6RZHYznP28xieBzQPackFPmmnevU") - fileprivate static let collectionName = "publicevent" + static let collectionName = "connectionTestEntity" + let clientAuth = UsergridAppAuth(clientId: "YXA68al98dLWEeahpA7sJBXz3w", clientSecret: "YXA6-CUpuVaNE3X_f6qDZuXskk_CdQw") - override func setUp() { - super.setUp() - Usergrid.initSharedInstance(orgId:ClientCreationTests.orgId, appId: "sdk.demo") - } - - override func tearDown() { - Usergrid._sharedClient = nil - super.tearDown() - } + let connectionEntities = [UsergridEntity(type:collectionName), + UsergridEntity(type:collectionName), + UsergridEntity(type:collectionName), + UsergridEntity(type:collectionName), + UsergridEntity(type:collectionName)] func test_CLIENT_AUTH() { @@ -55,17 +51,16 @@ class CONNECTION_Tests: XCTestCase { XCTAssertNotNil(appAuth.accessToken) XCTAssertNotNil(appAuth.expiry) + Usergrid.POST(self.connectionEntities) { (response) in - Usergrid.GET(CONNECTION_Tests.collectionName) { (response) in XCTAssertTrue(Thread.isMainThread) XCTAssertNotNil(response) XCTAssertTrue(response.ok) - XCTAssertTrue(response.hasNextPage) - XCTAssertEqual(response.entities!.count, 10) + XCTAssertEqual(response.entities!.count, self.connectionEntities.count) let entity = response.first! let entityToConnect = response.entities![1] - XCTAssertEqual(entity.type, CONNECTION_Tests.collectionName) + XCTAssertEqual(entity.type, CONNECTION_Tests.collectionName.lowercased()) entity.connect("likes", toEntity: entityToConnect) { (response) -> Void in XCTAssertTrue(Thread.isMainThread) @@ -90,7 +85,12 @@ class CONNECTION_Tests: XCTestCase { XCTAssertTrue(Thread.isMainThread) XCTAssertNotNil(response) XCTAssertTrue(response.ok) - authExpect.fulfill() + + Usergrid.DELETE(UsergridQuery().type(CONNECTION_Tests.collectionName)) { response in + XCTAssertTrue(response.ok) + XCTAssertEqual(response.entities?.count, self.connectionEntities.count) + authExpect.fulfill() + } } } } diff --git a/Tests/ClientCreationTests.swift b/Tests/ClientCreationTests.swift index 6776cb4..5abe6ce 100644 --- a/Tests/ClientCreationTests.swift +++ b/Tests/ClientCreationTests.swift @@ -29,46 +29,32 @@ import XCTest class ClientCreationTests: XCTestCase { - static let orgId = "rwalsh" - static let appId = "sandbox" - - override func setUp() { - super.setUp() - Usergrid.initSharedInstance(orgId:ClientCreationTests.orgId, appId: ClientCreationTests.appId) - Usergrid.persistCurrentUserInKeychain = false - } - - override func tearDown() { - Usergrid._sharedClient = nil - super.tearDown() - } - - func test_INSTANCE_POINTERS() { - XCTAssertNotNil(Usergrid.sharedInstance) - } + static let orgId = "rjwalsh" + static let appId = "sdk.demo" + let client = UsergridClient(orgId:ClientCreationTests.orgId, appId: ClientCreationTests.appId) func test_CLIENT_PROPERTIES() { - XCTAssertEqual(Usergrid.appId, ClientCreationTests.appId) - XCTAssertEqual(Usergrid.orgId, ClientCreationTests.orgId) - XCTAssertEqual(Usergrid.authMode, UsergridAuthMode.user) - XCTAssertEqual(Usergrid.persistCurrentUserInKeychain, false) - XCTAssertEqual(Usergrid.baseUrl, UsergridClient.DEFAULT_BASE_URL) - XCTAssertEqual(Usergrid.clientAppURL, "\(UsergridClient.DEFAULT_BASE_URL)/\(ClientCreationTests.orgId)/\(ClientCreationTests.appId)" ) - XCTAssertNil(Usergrid.currentUser) - XCTAssertNil(Usergrid.userAuth) + XCTAssertEqual(client.appId, ClientCreationTests.appId) + XCTAssertEqual(client.orgId, ClientCreationTests.orgId) + XCTAssertEqual(client.authMode, UsergridAuthMode.user) + XCTAssertEqual(client.persistCurrentUserInKeychain, true) + XCTAssertEqual(client.baseUrl, UsergridClient.DEFAULT_BASE_URL) + XCTAssertEqual(client.clientAppURL, "\(UsergridClient.DEFAULT_BASE_URL)/\(ClientCreationTests.orgId)/\(ClientCreationTests.appId)" ) + XCTAssertNil(client.currentUser) + XCTAssertNil(client.userAuth) } func test_CLIENT_NSCODING() { - let sharedInstanceAsData = NSKeyedArchiver.archivedData(withRootObject: Usergrid.sharedInstance) + let sharedInstanceAsData = NSKeyedArchiver.archivedData(withRootObject: client) let newInstanceFromData = NSKeyedUnarchiver.unarchiveObject(with: sharedInstanceAsData) as? UsergridClient XCTAssertNotNil(newInstanceFromData) if let newInstance = newInstanceFromData { - XCTAssertEqual(Usergrid.appId, newInstance.appId) - XCTAssertEqual(Usergrid.orgId, newInstance.orgId) - XCTAssertEqual(Usergrid.authMode, newInstance.authMode) - XCTAssertEqual(Usergrid.baseUrl, newInstance.baseUrl) + XCTAssertEqual(client.appId, newInstance.appId) + XCTAssertEqual(client.orgId, newInstance.orgId) + XCTAssertEqual(client.authMode, newInstance.authMode) + XCTAssertEqual(client.baseUrl, newInstance.baseUrl) } } } diff --git a/Tests/GET_Tests.swift b/Tests/GET_Tests.swift index b6698e5..0c8022b 100644 --- a/Tests/GET_Tests.swift +++ b/Tests/GET_Tests.swift @@ -29,24 +29,49 @@ import XCTest class GET_Tests: XCTestCase { - static let collectionName = "books" - static let entityUUID = "f4078aca-2fb1-11e5-8eb2-e13f8369aad1" - - let query = UsergridQuery(GET_Tests.collectionName).eq("title", value: "The Sun Also Rises").or().eq("title", value: "The Old Man and the Sea") + static let collectionName = "getTestEntities" + var postedEntities: [UsergridEntity] = [] override func setUp() { super.setUp() - Usergrid.initSharedInstance(orgId:ClientCreationTests.orgId, appId: ClientCreationTests.appId) + + let exp = self.expectation(description: "\(#function)") + POST_TEST_ENTITIES(count:20 ,completion: { response in + self.postedEntities = response.entities! + exp.fulfill() + }) + waitForExpectations(timeout: 10, handler: nil) } override func tearDown() { - Usergrid._sharedClient = nil super.tearDown() + let exp = self.expectation(description: "\(#function)") + DELETE_TEST_ENTITIES() { response in + exp.fulfill() + } + waitForExpectations(timeout: 10, handler: nil) + } + + + func POST_TEST_ENTITIES(count: Int, completion: @escaping UsergridResponseCompletion) { + var entitiesToPost: [UsergridEntity] = [] + for _ in (0..???? CFBundleVersion 1 + NSPrincipalClass + $(TARGET_NAME).TestSetup diff --git a/Tests/PUT_Tests.swift b/Tests/PUT_Tests.swift index ff67738..ec69049 100644 --- a/Tests/PUT_Tests.swift +++ b/Tests/PUT_Tests.swift @@ -29,22 +29,25 @@ import XCTest class PUT_Tests: XCTestCase { - let query = UsergridQuery(PUT_Tests.collectionName) - .eq("title", value: "The Sun Also Rises") - .or() - .eq("title", value: "The Old Man and the Sea") + static let putCollectionName = "putTestEntities" - static let collectionName = "books" - static let entityUUID = "f4078aca-2fb1-11e5-8eb2-e13f8369aad1" + var entityToPutOn: UsergridEntity! override func setUp() { super.setUp() - Usergrid.initSharedInstance(orgId:ClientCreationTests.orgId, appId: ClientCreationTests.appId) + + let exp = expectation(description: "\(#function)\(#line)") + Usergrid.POST(UsergridEntity(type: PUT_Tests.putCollectionName)) { (response) in + self.entityToPutOn = response.entity! + exp.fulfill() + } + + waitForExpectations(timeout: 20, handler: nil) } override func tearDown() { - Usergrid._sharedClient = nil super.tearDown() + entityToPutOn.remove() } func test_PUT_BY_SPECIFYING_UUID_AS_PARAMETER() { @@ -53,7 +56,7 @@ class PUT_Tests: XCTestCase { let propertiesNewValue = "\(propertyNameToUpdate)_VALUE" let putExpect = self.expectation(description: propertyNameToUpdate) - Usergrid.PUT(PUT_Tests.collectionName, uuidOrName: PUT_Tests.entityUUID, jsonBody:[propertyNameToUpdate : propertiesNewValue]) { (response) in + Usergrid.PUT(PUT_Tests.putCollectionName, uuidOrName: self.entityToPutOn.uuid!, jsonBody:[propertyNameToUpdate : propertiesNewValue]) { (response) in XCTAssertTrue(Thread.isMainThread) XCTAssertNotNil(response) XCTAssertTrue(response.ok) @@ -61,13 +64,15 @@ class PUT_Tests: XCTestCase { let entity = response.first! XCTAssertNotNil(entity) - XCTAssertEqual(entity.uuid!, PUT_Tests.entityUUID) + XCTAssertEqual(entity.uuid!, self.entityToPutOn.uuid!) let updatedPropertyValue = entity[propertyNameToUpdate] as? String XCTAssertNotNil(updatedPropertyValue) XCTAssertEqual(updatedPropertyValue!,propertiesNewValue) + putExpect.fulfill() } + self.waitForExpectations(timeout: 10, handler: nil) } @@ -77,9 +82,8 @@ class PUT_Tests: XCTestCase { let propertiesNewValue = "\(propertyNameToUpdate)_VALUE" let putExpect = self.expectation(description: propertyNameToUpdate) - let jsonDictToPut = [UsergridEntityProperties.uuid.stringValue : PUT_Tests.entityUUID, propertyNameToUpdate : propertiesNewValue] - - Usergrid.PUT(PUT_Tests.collectionName, jsonBody: jsonDictToPut) { (response) in + let jsonDictToPut = [UsergridEntityProperties.uuid.stringValue : self.entityToPutOn.uuid!, propertyNameToUpdate : propertiesNewValue] + Usergrid.PUT(PUT_Tests.putCollectionName, jsonBody: jsonDictToPut) { (response) in XCTAssertTrue(Thread.isMainThread) XCTAssertNotNil(response) XCTAssertTrue(response.ok) @@ -87,59 +91,55 @@ class PUT_Tests: XCTestCase { let entity = response.first! XCTAssertNotNil(entity) - XCTAssertEqual(entity.uuid!, PUT_Tests.entityUUID) + XCTAssertEqual(entity.uuid!, self.entityToPutOn.uuid!) let updatedPropertyValue = entity[propertyNameToUpdate] as? String XCTAssertNotNil(updatedPropertyValue) XCTAssertEqual(updatedPropertyValue!,propertiesNewValue) putExpect.fulfill() } + self.waitForExpectations(timeout: 10, handler: nil) } func test_PUT_WITH_ENTITY_OBJECT() { + let propertyNameToUpdate = "\(#function)" let propertiesNewValue = "\(propertyNameToUpdate)_VALUE" let putExpect = self.expectation(description: propertyNameToUpdate) - Usergrid.GET(PUT_Tests.collectionName, uuidOrName: PUT_Tests.entityUUID) { (getResponse) in + self.entityToPutOn[propertyNameToUpdate] = propertiesNewValue + + Usergrid.PUT(self.entityToPutOn) { (putResponse) in XCTAssertTrue(Thread.isMainThread) - XCTAssertNotNil(getResponse) - XCTAssertTrue(getResponse.ok) - XCTAssertEqual(getResponse.entities!.count, 1) + XCTAssertNotNil(putResponse) + XCTAssertTrue(putResponse.ok) + XCTAssertEqual(putResponse.entities!.count, 1) - var responseEntity = getResponse.first! + let responseEntity = putResponse.first! XCTAssertNotNil(responseEntity) - XCTAssertEqual(responseEntity.uuid!, PUT_Tests.entityUUID) - - responseEntity[propertyNameToUpdate] = propertiesNewValue - - Usergrid.PUT(responseEntity) { (putResponse) in - XCTAssertTrue(Thread.isMainThread) - XCTAssertNotNil(putResponse) - XCTAssertTrue(putResponse.ok) - XCTAssertEqual(putResponse.entities!.count, 1) - responseEntity = putResponse.first! + XCTAssertEqual(responseEntity.uuid!, self.entityToPutOn.uuid!) - XCTAssertNotNil(responseEntity) - XCTAssertEqual(responseEntity.uuid!, PUT_Tests.entityUUID) - - let updatedPropertyValue = responseEntity[propertyNameToUpdate] as? String - XCTAssertNotNil(updatedPropertyValue) - XCTAssertEqual(updatedPropertyValue!,propertiesNewValue) - putExpect.fulfill() - } + let updatedPropertyValue = responseEntity[propertyNameToUpdate] as? String + XCTAssertNotNil(updatedPropertyValue) + XCTAssertEqual(updatedPropertyValue!,propertiesNewValue) + putExpect.fulfill() } + self.waitForExpectations(timeout: 20, handler: nil) } func test_PUT_WITH_QUERY() { + sleep(20) + let propertyNameToUpdate = "\(#function)" let propertiesNewValue = "\(propertyNameToUpdate)_VALUE" let putExpect = self.expectation(description: propertyNameToUpdate) - Usergrid.PUT(self.query, jsonBody: [propertyNameToUpdate : propertiesNewValue]) { (putResponse) in + let query = UsergridQuery(PUT_Tests.putCollectionName).eq("uuid", value: self.entityToPutOn.uuid!) + + Usergrid.PUT(query, jsonBody: [propertyNameToUpdate : propertiesNewValue]) { (putResponse) in XCTAssertTrue(Thread.isMainThread) XCTAssertNotNil(putResponse) XCTAssertTrue(putResponse.ok) @@ -153,6 +153,7 @@ class PUT_Tests: XCTestCase { XCTAssertEqual(updatedPropertyValue!,propertiesNewValue) putExpect.fulfill() } + self.waitForExpectations(timeout: 10, handler: nil) } } diff --git a/Tests/TestSetup.swift b/Tests/TestSetup.swift new file mode 100644 index 0000000..8c2bcfb --- /dev/null +++ b/Tests/TestSetup.swift @@ -0,0 +1,38 @@ +// +// TestSetup.swift +// UsergridSDK +// +// Created by Robert on 2/14/17. +// Copyright © 2017 Apigee Inc. All rights reserved. +// +/* + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. The ASF licenses this file to You + * under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. For additional information regarding + * copyright in this work, please see the NOTICE file in the top level + * directory of this distribution. + * + */ + +import Foundation +@testable import UsergridSDK + +class TestSetup: NSObject { + override init () { + let config = UsergridClientConfig(orgId: "rjwalsh", appId: "sandbox") + config.persistCurrentUserInKeychain = false + + Usergrid.initSharedInstance(configuration: config) + } +} diff --git a/Tests/User_Tests.swift b/Tests/User_Tests.swift index aeea8c3..6511550 100644 --- a/Tests/User_Tests.swift +++ b/Tests/User_Tests.swift @@ -45,7 +45,6 @@ class User_Tests: XCTestCase { override func setUp() { super.setUp() - Usergrid.initSharedInstance(orgId:ClientCreationTests.orgId, appId: ClientCreationTests.appId) Usergrid.authMode = .user Usergrid.persistCurrentUserInKeychain = false @@ -60,8 +59,8 @@ class User_Tests: XCTestCase { } override func tearDown() { - Usergrid._sharedClient = nil super.tearDown() + Usergrid.sharedInstance.currentUser = nil } func test_USER_INIT() { @@ -163,7 +162,6 @@ class User_Tests: XCTestCase { XCTAssertTrue(removeResponse.ok) XCTAssertNotNil(removeResponse.user) XCTAssertNotNil(removeResponse.users) - print(removeResponse.error) expectation.fulfill() } } @@ -208,8 +206,6 @@ class User_Tests: XCTestCase { XCTAssertNil(error) XCTAssertTrue(available) -// self.deleteUser(userExpect) - self.user.create() { (createResponse) in XCTAssertTrue(Thread.isMainThread) XCTAssertNotNil(createResponse) @@ -233,7 +229,7 @@ class User_Tests: XCTestCase { XCTAssertNotNil(currentUser) XCTAssertNotNil(Usergrid.currentUser) - XCTAssertEqual(currentUser, Usergrid.currentUser!) + XCTAssertEqual(currentUser, Usergrid.currentUser) self.user.reauthenticate() { auth, reauthedUser, error in XCTAssertTrue(Thread.isMainThread) diff --git a/UsergridSDK.xcodeproj/project.pbxproj b/UsergridSDK.xcodeproj/project.pbxproj index beeeea8..bb68bd0 100644 --- a/UsergridSDK.xcodeproj/project.pbxproj +++ b/UsergridSDK.xcodeproj/project.pbxproj @@ -111,6 +111,9 @@ 63EE61031C406E1600AFC2CF /* UsergridAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63AF0F401BBC4EF6009D4196 /* UsergridAsset.swift */; }; 63EE61041C406E1600AFC2CF /* UsergridClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63AF0F421BBC4EF6009D4196 /* UsergridClient.swift */; }; 63EE610D1C406E2200AFC2CF /* UsergridSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 63AF0F471BBC4EF6009D4196 /* UsergridSDK.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 63F037201E53C716009714B4 /* TestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F0371F1E53C716009714B4 /* TestSetup.swift */; }; + 63F037211E53C716009714B4 /* TestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F0371F1E53C716009714B4 /* TestSetup.swift */; }; + 63F037221E53C716009714B4 /* TestSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F0371F1E53C716009714B4 /* TestSetup.swift */; }; 63F36F0F1C458AAE00CEEF54 /* UsergridRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F36F0E1C458AAE00CEEF54 /* UsergridRequest.swift */; }; 63F36F101C458AAE00CEEF54 /* UsergridRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F36F0E1C458AAE00CEEF54 /* UsergridRequest.swift */; }; 63F36F111C458AAE00CEEF54 /* UsergridRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F36F0E1C458AAE00CEEF54 /* UsergridRequest.swift */; }; @@ -178,6 +181,7 @@ 63E7DD2E1C514CA200D84B12 /* UsergridSessionDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UsergridSessionDelegate.swift; sourceTree = ""; }; 63EE60D81C404AB700AFC2CF /* UsergridResponseError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UsergridResponseError.swift; sourceTree = ""; }; 63EE610B1C406E1600AFC2CF /* UsergridSDK.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = UsergridSDK.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 63F0371F1E53C716009714B4 /* TestSetup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestSetup.swift; sourceTree = ""; }; 63F36F0E1C458AAE00CEEF54 /* UsergridRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UsergridRequest.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -303,6 +307,7 @@ 63AF0F571BBC528E009D4196 /* Tests */ = { isa = PBXGroup; children = ( + 63F0371F1E53C716009714B4 /* TestSetup.swift */, 63AF0F591BBC528E009D4196 /* ASSET_Tests.swift */, 63AF0F5A1BBC528E009D4196 /* AUTH_Tests.swift */, 63AF0F5B1BBC528E009D4196 /* ClientCreationTests.swift */, @@ -615,6 +620,7 @@ 630A21AE1C49C011008BE87F /* Entity_Tests.swift in Sources */, 630A21AB1C49C011008BE87F /* AUTH_Tests.swift in Sources */, 630A21B21C49C011008BE87F /* User_Tests.swift in Sources */, + 63F037211E53C716009714B4 /* TestSetup.swift in Sources */, 630A21B11C49C011008BE87F /* PUT_Tests.swift in Sources */, 630A21AD1C49C011008BE87F /* CONNECTION_Tests.swift in Sources */, 630A21AF1C49C011008BE87F /* GET_Tests.swift in Sources */, @@ -630,6 +636,7 @@ 630A21C81C49C4C0008BE87F /* Entity_Tests.swift in Sources */, 630A21C61C49C4C0008BE87F /* ClientCreationTests.swift in Sources */, 630A21C41C49C4C0008BE87F /* ASSET_Tests.swift in Sources */, + 63F037221E53C716009714B4 /* TestSetup.swift in Sources */, 630A21CC1C49C4C0008BE87F /* User_Tests.swift in Sources */, 630A21CB1C49C4C0008BE87F /* PUT_Tests.swift in Sources */, 630A21C51C49C4C0008BE87F /* AUTH_Tests.swift in Sources */, @@ -671,6 +678,7 @@ 630A218A1C49BDDE008BE87F /* User_Tests.swift in Sources */, 630A21891C49BDDE008BE87F /* PUT_Tests.swift in Sources */, 630A21821C49BDD3008BE87F /* AUTH_Tests.swift in Sources */, + 63F037201E53C716009714B4 /* TestSetup.swift in Sources */, 630A21851C49BDDE008BE87F /* CONNECTION_Tests.swift in Sources */, 630A21871C49BDDE008BE87F /* GET_Tests.swift in Sources */, 630A21831C49BDDE008BE87F /* ASSET_Tests.swift in Sources */, @@ -893,7 +901,7 @@ SDKROOT = appletvos; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 10.0; + TVOS_DEPLOYMENT_TARGET = 10.1; }; name = Debug; }; @@ -908,7 +916,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 10.0; + TVOS_DEPLOYMENT_TARGET = 10.1; }; name = Release; }; @@ -1116,6 +1124,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 10.1; }; name = Debug; }; @@ -1139,6 +1148,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 10.1; }; name = Release; }; From 7801e391a87c3229111beba214df35886df9a0eb Mon Sep 17 00:00:00 2001 From: Robert Walsh Date: Wed, 15 Feb 2017 14:46:19 -0600 Subject: [PATCH 7/8] Removed unwanted comment. --- Tests/TestSetup.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Tests/TestSetup.swift b/Tests/TestSetup.swift index 8c2bcfb..617b192 100644 --- a/Tests/TestSetup.swift +++ b/Tests/TestSetup.swift @@ -3,7 +3,6 @@ // UsergridSDK // // Created by Robert on 2/14/17. -// Copyright © 2017 Apigee Inc. All rights reserved. // /* * From b7f42f4376629e448c23fcf3bc27d56e8d46a9da Mon Sep 17 00:00:00 2001 From: Robert Walsh Date: Wed, 15 Feb 2017 15:53:24 -0600 Subject: [PATCH 8/8] Removed OS xcode console logs when running tests. --- .../xcshareddata/xcschemes/UsergridSDK OSX.xcscheme | 7 +++++++ .../xcshareddata/xcschemes/UsergridSDK iOS.xcscheme | 7 +++++++ .../xcshareddata/xcschemes/UsergridSDK tvOS.xcscheme | 7 +++++++ .../xcshareddata/xcschemes/UsergridSDK watchOS.xcscheme | 7 +++++++ 4 files changed, 28 insertions(+) diff --git a/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK OSX.xcscheme b/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK OSX.xcscheme index fe6f851..5ffd94a 100644 --- a/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK OSX.xcscheme +++ b/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK OSX.xcscheme @@ -71,6 +71,13 @@ ReferencedContainer = "container:UsergridSDK.xcodeproj"> + + + + diff --git a/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK iOS.xcscheme b/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK iOS.xcscheme index e321c26..49874ad 100644 --- a/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK iOS.xcscheme +++ b/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK iOS.xcscheme @@ -71,6 +71,13 @@ ReferencedContainer = "container:UsergridSDK.xcodeproj"> + + + + diff --git a/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK tvOS.xcscheme b/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK tvOS.xcscheme index 476b552..eaf7f10 100644 --- a/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK tvOS.xcscheme +++ b/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK tvOS.xcscheme @@ -85,6 +85,13 @@ ReferencedContainer = "container:UsergridSDK.xcodeproj"> + + + + diff --git a/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK watchOS.xcscheme b/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK watchOS.xcscheme index d8d45ad..ebc3852 100644 --- a/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK watchOS.xcscheme +++ b/UsergridSDK.xcodeproj/xcshareddata/xcschemes/UsergridSDK watchOS.xcscheme @@ -51,6 +51,13 @@ ReferencedContainer = "container:UsergridSDK.xcodeproj"> + + + +