- Contributing to this repo? Add info about your change here to be included in the next release
Fixes
- Addressed an issue that prevented updating ParseObjects with saveAll (#423), thanks to Corey Baker.
Fixes
- For Swift 5.5.2+ all asynchronous methods that attempt to save, create, update, or replace use the async/await version of deep saving ParseObjects. This fixes any purple warnings caused by the SDK in Xcode. Older Swift versions use the synchronous version of deep saving (#418), thanks to Corey Baker.
- Can catch when the Parse Server throws an improper ParseError that only contains "error" or "message", but does not contain a "code" (#418), thanks to Corey Baker.
New features
- Add file caching using the Parse download folder (#416), thanks to Corey Baker.
Fixes
- Remove ParseFile caching due to OS not having a natural way to cache files. Instead, if developers want to access a saved ParseFile, they should check the download directory for the respective file name (#414), thanks to Corey Baker.
New features
- Add helper methods to ParseFileTransferable protocol to assist with creating propper responses to file uploads (#411), thanks to Corey Baker.
Fixes
- Remove cached error responses when decoding errors occur (#411), thanks to Corey Baker.
New features
- Add the ParseFileTransferable protocol for overriding the default transfer behavior for ParseFile's. Allows for direct uploads to other file storage providers (#410), thanks to Corey Baker.
- Add the become method to ParseInstallation which allows any ParseInstallation to be copied to the current installation. This method can be used to migrate any ParseInstallation to the current installation in the Swift SDK (#407), thanks to Corey Baker.
Fixes
- Properly get the session token from the Parse Objective-C Keychain when using ParseUser.loginUsingObjCKeychain (#407), thanks to Corey Baker.
New features
- Add a set method that developers can call on their ParseObjects which automatically sends updated properties to a Parse Server and merges those updates with the original ParseObject locally. The feature removes the requirement to call mergeable and implement merge(), but comes at additional computational overhead (#406), thanks to Corey Baker.
New features
- Add a new operation method that allows developers to set a new value to a KeyPath without needing the string version of the key. Also adds the get() method to allow developers to get the unwrapped property of any ParseObject based on its KeyPath (#403), thanks to Corey Baker.
- Add revertKeyPath() and revertObject() methods to ParseObject which allow developers to revert to original values of key paths or objects after mutating ParseObjects that already have an objectId (#402), thanks to Corey Baker.
Fixes
- When saving ParseFiles locally, files that have a directory in their filename save correctly instead of throwing an error on the client (#399), thanks to Corey Baker.
- Default to not setting kSecUseDataProtectionKeychain to true as this can cause issues with querying the Keychain in Swift Playgrounds or other apps that cannot setup the Keychain on macOS. This behavior can be changed by setting usingDataProtectionKeychain to true when initializing the SDK (#398), thanks to Corey Baker.
Fixes
- Allow fully qualified ParseSwift types to be used externally by fixing clash with module name (#397), thanks to Corey Baker.
Fixes
- Corrects a memory leak where multiple Parse URLSessions can get created. Use an actor for the url session delegates to ensure thread safety when making async calls in parallel (#394), thanks to Corey Baker.
New features
- Add methods for migrating users and installations from the Parse Objective-C SDK to the Swift SDK (#391), thanks to Corey Baker.
- Enable query caching by using GET instead of POST. GET is now used by default. To switch back to POST, set usingPostForQuery = true when initializing the SDK which will automatically disable all query caching (#386), thanks to Corey Baker.
- Add setAccessGroup method which allows the Parse Keychain to be shared with app extensions and iCloud accounts (#378), thanks to Corey Baker.
Improvements
- Add more details to error messages related when decoding errors occur (#388), thanks to Daniel Blyth.
- Added discardableResult to allow developers to choose whether or not certain functions should return a result (#385), thanks to Damian Van de Kauter.
Fixes
- Ensure properties that are already saved ParseObject's are converted to Parse pointers when using saveAll (#390), thanks to Corey Baker.
New features
- Add ParseSpotify authentication (#375), thanks to Ulaş Sancak.
Fixes
- Encode withinPolygon Queryconstraint correctly (#381), thanks to Corey Baker.
- Use select for ParseLiveQuery when fields are not present (#376), thanks to Corey Baker.
New features
- Add support for ParseFile and beforeConnect triggers (#376), thanks to Corey Baker.
New features
- Add the ability to use Parse Hooks and Triggers (#373), thanks to Corey Baker.
- Add ParseInstagram authentication (#372), thanks to Ulaş Sancak.
- Add the ability to send APN and FCM push notifications. Also adds the ability to query _PushStatus (#371), thanks to Corey Baker.
- Add ParseSchema, ParseCLP, and ParseFieldOptions. Should only be used when using the Swift SDK on a secured server (#370), thanks to Corey Baker.
New features
- Add toCLLocation and toCLLocationCoordinate2D computed properties to ParseGeoPoint, deprecate toCLLocation() and toCLLocationCoordinate2D() (#366), thanks to Corey Baker.
- Add query computed property to ParseObject (#365), thanks to Corey Baker.
- Add macCatalyst to SPM (#363), thanks to Corey Baker.
- Add an order() method to Query that excepts a variadic list as input (#362), thanks to Corey Baker.
Improvements
- Allow includeAll key to be sent with additional include keys. When fetching, if the include argument is specified, convert it to a Set to prevent duplicate keys from being sent to the server (#367), thanks to Corey Baker.
- Allow LiveQuery client to be set using ParseLiveQuery.defaultClient and deprecate ParseLiveQuery.setDefault(). Show usage of deprecated code as warnings during compile time and suggest changes (#360), thanks to Corey Baker.
Improvements
- Drop support for Swift 5.2 as App Store requires apps to be built in Xcode 12 (#356), thanks to Corey Baker.
Fixes
- Fix links to API documentation (#354), thanks to Corey Baker.
Improvements
- Use DocC for documentation instead of jazzy. Improved documentation (#350), thanks to Corey Baker.
New features
- Add variadic QueryConstraint methods for or, nor, and (#345), thanks to Corey Baker.
Improvements
- Add clientDefault static property to ParseLiveQuery which replaces the getDefault() method. getDefault() is still avaiable, but will be deprecated in ParseSwift 5.0.0 so it is recommended to switch to defaultClient (#342), thanks to Corey Baker.
Improvements
- Let the OS and developer decide if app tracking authorization is required when using ParseAnalytics. ParseAnalytics can now take any Codable value in its' dimensions instead of just strings. Added a new property "date" to ParseAnalytics. The "at" property will be deprecated in ParseSwift 5.0.0, so developers should switch to "date". ParseAnalytics can now be properly decoded after encoding with a JSONEncoder. This is useful if ParseAnalytics need to be stored locally and sent to the server later (#341), thanks to Corey Baker.
Fixes
- Allow ParseRole's to be updated when the SDK is allowing custom objectId's (#338), thanks to Corey Baker.
New features
- Add the verifyPassword to ParseUser. This method defaults to using POST though POST is not available on the current Parse Server. Change userPost == false to use GET on older Parse Servers (#333), thanks to Corey Baker.
- (Breaking Change) Bump the SPM toolchain from 5.1 to 5.5. This is done to take advantage of features in the latest toolchain. For developers using < Xcode 13 and depending on the Swift SDK through SPM, this will cause a break. You can either upgrade your Xcode or use Cocoapods or Carthage to depend on ParseSwift (#326), thanks to Corey Baker.
- (Breaking Change) Add the ability to merge updated ParseObject's with original objects when using the .mergeable property. To do this, developers need to add an implementation of merge() to respective ParseObject's. The compiler will recommend the new originalData property be added to every ParseObject. If you used ParseObjectMutable in the past, you should remove it as it is now part of ParseObject. In addition, all ParseObject properties should be optional and every object needs to have a default initializer of init(). See the Playgrounds for recommendations on how to define a ParseObject. Look at the PR for details on why this is important when using the SDK (#315), thanks to Corey Baker.
- Add DocC for SDK documentation (#209), thanks to Corey Baker.
Improvements
- (Breaking Change) Make ParseRelation conform to Codable and add methods to make decoded stored ParseRelations "usable". ParseObjects can now contain properties of ParseRelation. In addition, ParseRelations can now be made from ParseObject pointers. For ParseRole, the computed properties: users and roles, are now optional. The queryRoles property has been changed to queryRoles() to improve the handling of thrown errors (#328), thanks to Corey Baker.
- (Breaking Change) Change the following method parameter names: isUsingMongoDB -> usingMongoDB, isIgnoreCustomObjectIdConfig -> ignoringCustomObjectIdConfig, isUsingEQ -> usingEqComparator (#321), thanks to Corey Baker.
- (Breaking Change) Change the following method parameter names: isUsingMongoDB -> usingMongoDB, isIgnoreCustomObjectIdConfig -> ignoringCustomObjectIdConfig, isUsingEQ -> usingEqComparator (#321), thanks to Corey Baker.
- (Breaking Change) Change the following method parameter names: isUsingTransactions -> usingTransactions, isAllowingCustomObjectIds -> allowingCustomObjectIds, isUsingEqualQueryConstraint -> usingEqualQueryConstraint, isMigratingFromObjcSDK -> migratingFromObjcSDK, isDeletingKeychainIfNeeded -> deletingKeychainIfNeeded (#323), thanks to Corey Baker.
Fixes
- Async/await methods that return void would no throw errors received from server (#334), thanks to Corey Baker.
- Always check for ParseError first when decoding responses from the server. Before this fix, this could cause issues depending on how calls are made from the Swift SDK (#332), thanks to Corey Baker.
Fixes
- Allowing building of the Swift SDK for Swift 5.5.0 and 5.5.1 re-enabling builds for Xcode 13.0 and 13.1. Note that async/await functionality is only available for Swift 5.5.2+ and Xcode 13.2+ (#320), thanks to Corey Baker.
- Move the var score: Double? to a protocol named ParseQueryScorable. When developers want to sort by score using a matchesText QueryConstraint, they just conform their ParseObject's to ParseQueryScorable (#319), thanks to Corey Baker.
Fixes
- Always sort keys when using the ParseEncoder as it can cause issues when trying to save ParseObject's that have children (#318), thanks to Corey Baker.
New features
- Add the ability to explain MongoDB queries by setting usingMongoDB = true for the respective explain query (#314), thanks to Corey Baker.
New features
- Adds equalTo QueryConstraint along with ability to change the SDK default behavior of using $eq QueryConstraint parameter or not (#310), thanks to Corey Baker.
- Adds isNull and isNotNull QueryConstraint along with the ability set/forceSet null using ParseOperation (#308), thanks to Corey Baker.
- Adds auth support for GitHub, Google, and LinkedIn (#307), thanks to Corey Baker.
- (Breaking Change) Adds options to matchesText QueryConstraint along with the ability to see matching score. The compiler will recommend the new score property be added to all ParseObjects (#306), thanks to Corey Baker.
- Adds withCount query (#306), thanks to Corey Baker.
Improvements
- (Breaking Change) Change boolean configuration parameters to match Swift conventions. The compilor should help with name changes (#311), thanks to Corey Baker.
- Improve QueryWhere by making at a set of QueryConstraint's instead of any array. This dedupes the same constraint when encoding the query; improving the encoding speed when the same constraints are added (#308), thanks to Corey Baker.
Improvements
- Reduce call sites by having all methods with variadic arguments call their array counterparts (#301), thanks to Corey Baker.
Fixes
- Let additional headers accept [AnyHashable: Any] (#302), thanks to Corey Baker.
- Throw .missingObjectId when missing the client detects a missing objectId instead of throwing an .unknown error (#300), thanks to Corey Baker.
New features
- Added create(), replace(), update(), createAll(), replaceAll(), and updateAll() to ParseObjects. Currently, update() and updateAll() are unavaivalble due to limitations of PATCH on the Parse Server (#299), thanks to Corey Baker.
- Added convenience methods to convert ParseObject's to Pointer's for QueryConstraint's: !=, containedIn, notContainedIn, containedBy, containsAll (#298), thanks to Corey Baker.
New features
- Added additional methods to ParseRelation to make it easier to create and query relations (#294), thanks to Corey Baker.
- Enable async/await for iOS13, tvOS13, watchOS6, and macOS10_15. All async/await methods are MainActor's. Requires Xcode 13.2 or above to use async/await. Not compatible with Xcode 13.0/1, will need to upgrade to 13.2+. Still works with Xcode 11/12 (#278), thanks to Corey Baker.
Fixes
- When transactions are enabled errors are now thrown from the client if the amount of objects in a transaction exceeds the batch size. An error will also be thrown if a developer attempts to save objects in a transation that has unsaved children (#295), thanks to Corey Baker.
Fixes
- Fixed an issue where querying an object did not dispatch to the proper queue which can cause app crashes (#293), thanks to Corey Baker.
New features
- Add a retry mechanism to the SDK that randomly (up to 3 seconds each) tries to reconnect up to 5 times. The developer can increase or reduce the amount of retries when configuring the SDK (#291), thanks to Corey Baker.
- Add toCLLocation and toCLLocationCoordinate2D methods for easy conversion from a ParseGeoPoint object (#287), thanks to Jayson Ng.
Fixes
- Fixed an issue where an annonymous could not be turned into a regular user using signup (#291), thanks to Corey Baker.
- The default ACL is now deleted from the keychain when a user is logged out. This previously caused an issue when logging out a user and logging in as a different user caused all objects to only have ACL permisions for the logged in user (#291), thanks to Corey Baker.
Fixes
- Use default ACL automatically on newley created ParseObject's if a default ACL is available (#284), thanks to Corey Baker.
Fixes
- Overload QueryConstraint to accept Pointer (#281), thanks to Corey Baker.
- Add checks to build for Windows (#281), thanks to Corey Baker.
Fixes
- Delete all stored Parse data and cache when isDeletingKeychainIfNeeded is true (#280), thanks to Corey Baker.
Fixes
- Improve dpcumentation (#276), thanks to Corey Baker.
Fixes
- Improve equatable comparison of QueryConstraint (#275), thanks to Corey Baker.
Fixes
- Set the default cache policy for ParseFile to the default policy set when initializing the SDK (#274), thanks to Corey Baker.
Improvements
- Added ability to fetch ParsePointer using async/await (#271), thanks to Corey Baker.
Fixes
- By default, do not use cache when fetching ParseObject's and ParseFile's. Developers can choose to fetch from cache if desired by passing the necessary option while fetching. Fixed a bug when the incorrect file location for a dowloaded ParseFile was being cached (#272), thanks to Corey Baker.
Improvements
- Make ParseUser.current, ParseInstallation.current, ParseConfig.current immutable. This prevents accidently setting to nil. When developers want to make changes, they should make mutable copies, mutate, then save (#266), thanks to Corey Baker.
- Added the ParseObjectMutable protocol to make emptyObject more developer friendly (#270), thanks to Damian Van de Kauter.
Fixes
- Async/await methods should be available for watchOS 8+ (#265), thanks to Corey Baker.
Improvements
- Add static methods for accessing encoders/decoder so developers do not have to create instances to access (#259), thanks to Corey Baker.
Fixes
- Parse ViewModels always dispatch to the main queue when updating published properties. This prevents possible issues when background async calls update properties used for views (#260), thanks to Corey Baker.
Fixes
- ParseUser should only encode email when User.current?.email is different from current user email (#256), thanks to Corey Baker.
New features
- Added option to delete Parse items from Keychain when the app is running for the first time (#254), thanks to Corey Baker.
Improvements
- (Breaking Change) ParseObject's now conform to Identifiable and can be used directly with SwiftUI without additonal properties needed. Drops support for iOS 12, tvOS 12, watchOS 5, and macOS 10.13/14 (#254), thanks to Corey Baker.
Improvements
- Added
operation
forset
andforceSet
, used for single key updates (#248), thanks to Daniel Blyth and Corey Baker. - Add more detail to invalid struct errors (#238), thanks to Daniel Blyth.
Improvements
- Improve documentation for ParseObject (#253), thanks to Corey Baker.
Improvements
- Update documents to show new Swift 5.5 async/await methods (#252), thanks to Corey Baker.
New features
- Supports Swift 5.5 async/await (#212), thanks to Corey Baker.
Improvements
- Added an extension to compare a Swift Error with a single ParseError or multiple ParseErrors (#250), thanks to Damian Van de Kauter.
Improvements
- Removes emptyObject requirement that was added in #243. Instead, has a recommendation in playgrounds on how to use emptyObject to only send select modified keys to the server (#249), thanks to Corey Baker.
Improvements
- (Breaking Change) Provide ParseObject property, emptyObject, that makes it easy to send only modified keys to the server. This change "might" be breaking depending on your implementation as it requires ParseObjects to now have an empty initializer, init() (#243), thanks to Corey Baker.
Fixes
- ParseUser should not send email if it has not been modified or else email verification is resent (#241), thanks to Corey Baker.
Fixes
- ParseInstallation cannot be retreived from Keychain after the first fun (#236), thanks to Corey Baker.
Fixes
- Saving ParseObjects with ParseFile properties now saves files on background queue (#230), thanks to Corey Baker.
Fixes
- Use a seperate Keychain for each app bundleId. This only effects macOS apps as their Keychain is handled by the OS differently. For macOS app developers only, the user who logged in last to your app will have their Keychain upgraded to the patched version. Other users/apps will either need to login again or logout then login again (#224), thanks to Corey Baker.
Improvements
- Properly allow a mixed custom objectId environment without compromising safety checks using .save(). If a developer wants to ignore the objectId checks, they need to specify ignoringCustomObjectIdConfig = true each time (#222), thanks to Corey Baker.
Fixes
- Query withinMiles and withinKilometers was not returning unsorted results when sort=false (#219), thanks to Corey Baker.
Improvements
- LiveQuery web socket connections handle URL error codes -1001 "The request timed out" and -1011 "There was a bad response from the server." (#217), thanks to Lukas Smilek.
Fixes
- Fix LiveQuery reconnections when server disconnects. Always receive and pass connection errors to ParseLiveQuery delegate (#211), thanks to Corey Baker.
Improvements
- Ensure delegate set before resuming a ParseLiveQuery task (#209), thanks to Corey Baker.
Improvements
- ParseLiveQuery checks all states of a websocket and reacts as needed after an error (#207), thanks to Corey Baker.
Improvements
- Clear caching when a user logs out (#198), thanks to Corey Baker.
- Close all LiveQuery connections when a user logs out (#199), thanks to Corey Baker.
- ParseLiveQuery attempts to reconnect upon disconnection error (#204), thanks to Corey Baker.
- Make ParseFileManager public so developers can easily find the location of ParseFiles (#205), thanks to Corey Baker.
Fixes
- Fix Facebook and Twitter login setting incorrect keys (#202), thanks to Daniel Blyth.
New features
- (Breaking Change) Added a new type, QueryViewModel which conforms to ObservableObject. The new type serves as a view model property for any Parse Query. Simply call query.viewModel to use the view model with any SwiftUI view. QueryViewModel can be subclassed for customization. In addition, developers can create their own view models for queries by conforming to QueryObservable. LiveQuery Subscription's inherrit from QueryViewModel meaning instances of Subscription provides a single view model that publishes updates from LiveQuery events and traditional find, first, count, and aggregate queries. A breaking change is introduced for those use custom subscriptions as ParseSubscription has been renamed to QuerySubscribable (#183), thanks to Corey Baker.
- Added a new type, CloudViewModel which conforms to ObservableObject. The new type serves as a view model property for any Cloud Code. Simply call cloud.viewModel to use the view model with any SwiftUI view. CloudViewModel can be subclassed for customization. In addition, developers can create their own view models for queries by conforming to CloudObservable (#183), thanks to Corey Baker.
- Added two missing Parse types, ParseBytes and ParsePolygon (#190), thanks to Corey Baker.
- Added caching of http requests along with adding additional headers. Caching and additional headers can be set when initializing the SDK. Caching can also be set per request using API.Options (#196), thanks to Corey Baker.
Improvements
- Removed CommonCrypto and now uses encoded string as a hash for child ParseObjects across all OS's (#184), thanks to Corey Baker.
- All types now conform to CustomStringConvertible (#185), thanks to Corey Baker.
- Setting limit = 0 of a query does not query the server and instead just returns empty or no results depending on the query (#189), thanks to Corey Baker.
- ParseGeoPoint initializer now throws if geopoints are out-of-bounds instead of asserting (#190), thanks to Corey Baker.
- Persist all properties of ParseUser and ParseInstallation to keychain so they can be accessed via current. Developers do not have to fetch the ParseUser or ParseInstlation after app restart anymore (#191), thanks to Corey Baker.
Fixes
- Fixed a bug when signing up from a ParseUser instance resulted in custom keys not being persisted to the keychain (#187), thanks to Corey Baker.
- Fixed a bug where countExplain query result was not returned as an array (#189), thanks to Corey Baker.
- The query withinPolygon(key: String, points: [ParseGeoPoint]) now works correctly and sends an array of doubles instead of an array of GeoPoint's (#190), thanks to Corey Baker.
- Fixed a bug where the ParseEncoder incorrectly detects a circular dependency when two child objects are the same (#194), thanks to Corey Baker.
- Make sure all LiveQuery socket changes are received on the correct queue to prevent threading issues (#195), thanks to Corey Baker.
Improvements
- Added SwiftUI query combine example to playgrounds. Skip id when encoding ParseObjects (#181), thanks to Corey Baker.
- Persist current SDK version for migrating between versions (#182), thanks to Corey Baker.
Fixes
- Fixed a bug in LiveQuery when a close frame is sent from the server that resulted in closing
all running websocket tasks instead of the particular task the request was intended for. The fix
includes a new delegate method named
closedSocket()
which provides the close code and reason the server closed the connection (#176), thanks to Corey Baker.
Fixes
- Switched context header X-Parse-Context to X-Parse-Cloud-Context to match server (#170), thanks to Corey Baker.
- Fixed a bug in LiveQuery that prevented reconnecting after a connection was closed. Also added a sendPing method to LiveQuery (#172), thanks to Corey Baker.
Fixes
- Fixed a bug that prevented saving ParseObjects that had Pointers as properties (#169), thanks to Corey Baker.
Improvements
- Ensure pipeline and fields are checked when comparing queries (#163), thanks to Corey Baker.
- Allow custom error codes to be thrown from Cloud Functions (#165), thanks to Daniel Blyth.
Improvements
- Append instead of replace when using query select, exclude, include, and fields (#155), thanks to Corey Baker.
Fixes
- Transactions currently do not work when using MongoDB(postgres does work) on the parse-server. Internal use of transactions are disabled by default. If you want the Swift SDK to use transactions internally, you need to set isUsingTransactionsInternally=true when configuring the client. It is recommended not to use transactions if you are using MongoDB until it is fixed on the server (#158), thanks to Corey Baker.
New features
- Add ParseAnalytics. Requires app tracking authorization in latest OS's (#147), thanks to Corey Baker.
Improvements
- Adds the ability to directly use == as a QueryConstraint on a field that's a ParseObject (#147), thanks to Corey Baker.
- Future proof SDK by always sending client version header. Also added http method PATCH to API for future use (#146), thanks to Corey Baker.
Fixes
- Fixed an error that occured when deleting a ParseFile which resulted in the file being downloaded locally (#147), thanks to Corey Baker.
New features
- Added ability to send context with object by specifying it within options (#140), thanks to Corey Baker.
Fixes
- ParseFiles cannot be updated from the client and will now throw an error if attempted. Instead another file should be created and the older file should be deleted by the developer. (#144), thanks to Corey Baker.
- Fixed issue where Swift SDK prevented fetching of Parse objects when custom objectId was enabled (#139), thanks to Corey Baker.
Improvements
- Add playground example of saving Parse objects with a custom objectId (#137), thanks to Corey Baker.
- Improved comparison of query constraints by comparing value (#140), thanks to Corey Baker.
New features
- Can now check the health of a Parse Server using ParseHealth. (#134), thanks to Corey Baker.
Improvements
- Add emailVerified to ParseUser. Make relative query take a QueryConstraint as an argument. Add more documentation (#129), thanks to Corey Baker.
Improvements
- Make AnyCodable internal. If developers want to use AnyCodable, AnyEncodable, or AnyDecodable for
explain
orParseCloud
, they should add the AnyCodable package to their app. In addition developers can create their own type-erased wrappers or use whatever they desire (#127), thanks to Corey Baker.
Improvements
- Update ParseError to match server and make ParseError and ParseObject Pointer documentation public (#125), thanks to Corey Baker.
Improvements
- (Breaking Change) Aggregrate takes any Encodable type. Query planning methods are now: findExlpain, firstEplain, countExplain, etc. The distinct query now works. The client will also not throw an error anymore when attempting to delete a File and the masterKey is not available. The developer will still need to configure the server to delete the file properly (#122), thanks to Corey Baker.
Improvements
- (Breaking Change) A query hint can now be set using a method and its return type is automatically inferred. In addition, a hint can now be any Encodable type instead of just a String (#119), thanks to Corey Baker.
New features
- Add findAll query to find all objects (#118), thanks to Corey Baker.
- Can now delete the iOS Objective-C SDK Keychain from app (#118), thanks to Corey Baker.
- Migrate installationId from obj-c SDK (#117), thanks to Corey Baker.
Improvements
- Added ability to initialize SDK with ParseConfiguration. Can now update certificate pinning authorization after SDK is initializated (#117), thanks to Corey Baker.
Improvements
- (Breaking Change) No longer require dispatch to main queue when using ParseInstallation. The side effect of this is badge is no longer retrieved by the SDK. The developer should retrieve the badge count on their own and save it to
ParseInstallation
if they require badge (#114), thanks to Corey Baker.
Fixes
- (Breaking Change) Correctly saves objectId of ParseInstallation to Keychain when saving to server. Also fixes issue when using deleteAll with current ParseUser and ParseInstallation. Old installations will automatically be migrated to the new one. If you end up having issues you can delete all of the installations in your ParseDashboard that were created with Parse-Swift < 1.30. If you are not able to do this, you can all log out of devices using Parse-Swift < 1.30 and then log back in (#116), thanks to Corey Baker.
Fixes
- Recreate installation automatically after deletion from Keychain (#112), thanks to Corey Baker.
- Error when linking auth types due to server not sending sessionToken (#109), thanks to Corey Baker.
Fixes
- Let ParseFacebook accept expiresIn parameter instead of converting to date (#104), thanks to Corey Baker.
Fixes
- Ensure all dates are encoded/decoded to the proper UTC time (#103), thanks to Corey Baker.
Fixes
- Fixed a bug that prevented custom objectIds from working (#101), thanks to Corey Baker.
New features
- Allow custom objectIds (#100), thanks to Corey Baker.
- Add ParseTwitter and ParseFacebook authentication (#97), thanks to Abdulaziz Alhomaidhi.
- Add build support for Android (#90), thanks to jt9897253.
Fixes
- There was another bug after a user first logs in anonymously and then becomes a real user. The authData sent to the server was not stripped, keep the user anonymous instead of making them a real user (#100), thanks to Corey Baker.
Improvements
- Child objects are now automatically saved in batches using transactions. This will result in less network overhead and prevent uneccessary clean up of data on the server if a child objects throws an error while saving (#94), thanks to Corey Baker.
Fixes
- There was a bug after a user first logs in anonymously and then becomes a real user as the server sends a new sessionToken when this occurs, but the SDK used the old sessionToken, resulting in an invalid sessionToken error (#94), thanks to Corey Baker.
New features
- Add transaction support to batch saveAll and deleteAll (#89), thanks to Corey Baker.
- Add modifiers to containsString, hasPrefix, hasSuffix (#85), thanks to Corey Baker.
Improvements
- (Breaking Change) Allows return types to be specified for
ParseCloud
, queryhint
, andexplain
(see playgrounds for examples). Changed functionality of synchronousquery.first()
. It use to return nil if no values are found. Now it will throw an error if none are found. (#92), thanks to Corey Baker. - Better error reporting when decode errors occur (#92), thanks to Corey Baker.
- Can use a variadic version of exclude. Added examples of select and exclude query in playgrounds (#88), thanks to Corey Baker.
Fixes
- Send correct SDK version number to Parse Server (#84), thanks to Corey Baker.
Improvements
- Make it easier to use
ParseApple
(#81), thanks to Corey Baker. ParseACL
improvements. Only callParseUser.current
when necessary (#80), thanks to Corey Baker.
New features
- LDAP authentication support (#79), thanks to Corey Baker.
- Support for push notifications through
ParseInstallation
(#78), thanks to Corey Baker. - Fetch with include (#74), thanks to Corey Baker.
Improvements
- Added
ParseLiveQuery
SwiftUI example to Playgrounds (#77), thanks to Corey Baker.
New features
- SwiftUI ready! (#73), thanks to Corey Baker.
Fixes
- Fixes some issues with
ParseUser.logout
(#73), thanks to Corey Baker.
Fixes Installing via SPM crashes (#69), thanks to pmmlo.
Fixes
- Expose
ParseLiveQuery
subscription properties (#66), thanks to Corey Baker.
New features
- Enable
ParseFile
for Linux (#64), thanks to jt9897253. - Use a
ParseLiveQuery
subscription as a SwiftUI view model (#65), thanks to Corey Baker. - Idempotency support (#62), thanks to Corey Baker.
New features
- Linux support. See the PR for limitations (#59), thanks to Corey Baker.
New features
- Config support (#56), thanks to Corey Baker and Tom Fox.
- Role and Relation support. Also improved Parse operations and added examples in Playgrounds (#54), thanks to Corey Baker and Tom Fox.
- Added more
Query
support for distinct, aggregate, nor, containedBy, and relative time (#54), thanks to Corey Baker and Tom Fox. - Annonymous and Apple login along with
ParseAuthentication
protocol for support of any adapter (#53), thanks to Corey Baker and Tom Fox. - Developer side network authentication for certificate pinning. Parse-Swift can share authentication with
ParseLiveQuery
or they can use seperate (#45), thanks to Corey Baker and Tom Fox. - Full LiveQuery support (min requirement: macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0) (#45), thanks to Corey Baker and Tom Fox.
- Support of Cloud and Job functions along with password reset and verification email request (#43), thanks to Corey Baker and Tom Fox.
- Add
ParseFile
support (#40), thanks to Corey Baker. - Add
deleteAll
to Parse objects (#34), thanks to Corey Baker. - Save child pointers and deep saving of objects (#21), thanks to Corey Baker.
- Persist
ParseUser
,ParseInstallation
, and defaultParseACL
to Keychain (#19), thanks to Corey Baker. - Add PrimitiveObectStore protocol that extends Keychain Store (#13), thanks to Pranjal Satija.
- Add
AnyCodable
support (#12), thanks to Corey Baker and Shawn Baek. - Add Keychain storage (#7), thanks to Florent Vilmart.
- Add
ParseError
, SwiftLint, saveAll, SPM, synchronous support (#6), thanks to Florent Vilmart. - Create Parse-Swift project, project Playground, and add Travis CI (#1), thanks to Florent Vilmart.
Improvements
- Naming conventions and structure (#54), thanks to Corey Baker and Tom Fox.
- Improve network progress updates and threading (#51), thanks to Corey Baker.
- User login now uses
POST
instead ofGET
(#45), thanks to Corey Baker and Tom Fox. - Dedicated Parse URLSession for more control and delegation (#45), thanks to Corey Baker and Tom Fox.
- Objects are batched in groups of 50 (#43), thanks to Corey Baker and Tom Fox.
- Add default queues to async calls (#38), thanks to Corey Baker.
- Persist queried and fetch objects to Keychain if they match a
current
object already stored (#34), thanks to Corey Baker. - Improve ParseEncoder to support arrays (#33), thanks to Corey Baker.
- Add a new ParseEncoder from Swift 5.3 open-source JSON encoder (#21), thanks to Corey Baker.
- Full support of
ParseGeopoint
and improve querying (#21), thanks to Corey Baker and Tom Fox. - Improved async networking calls (#15), thanks to Corey Baker.
- Rename and restructure project (#13), thanks to Pranjal Satija.
- Update to Swift 5.0 (#12), thanks to Corey Baker.
- Remove RESTCommand and add API.Command (#6), thanks to Florent Vilmart.
Fixes
- Delete current installation during logout (#52), thanks to Corey Baker.
- Parse server supports
$eq
, but this is not supported by LiveQueryServer, switched to supported (#49), thanks to Corey Baker. - Bug when updating a ParseObject bug where objects was accidently converted to pointers (#48), thanks to Corey Baker.
- User logout was calling the wrong endpoint (#43), thanks to Corey Baker and Tom Fox.
- Fix an issue where ACL was overwritten with nil (#40), thanks to Corey Baker.
- Update Keychain during fetch. Fix synchronous bug that occured with
ParseError
was thrown (#38), thanks to Corey Baker. - Fix ParseEncoder bugs (#27), thanks to Corey Baker.
- Fix async callback queue bug (#27), thanks to Corey Baker.
- Fix bugs in ParseACL and bump minimum OS support to
.iOS(.v11), .macOS(.v10_13), .tvOS(.v11), .watchOS(.v4)
(#19), thanks to Corey Baker. - Fix bugs in batch and save responses (#15), thanks to Corey Baker.
- Fix Keychain tests (#12), thanks to Corey Baker.