Skip to content

Releases: parse-community/Parse-Swift

4.1.0

07 Feb 07:21
c8252bc
Compare
Choose a tag to compare

Full Changelog

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 @cbaker6

4.0.1

29 Jan 23:50
51e16d0
Compare
Choose a tag to compare

Full Changelog

Fixes

  • Allow ParseRole's to be updated when the SDK is allowing custom objectId's (#338), thanks to @cbaker6.

4.0.0

26 Jan 18:55
879055b
Compare
Choose a tag to compare

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 @cbaker6.
  • (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 @cbaker6.
  • (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 @cbaker6.
  • Add DocC for SDK documentation (#209), thanks to @cbaker6.

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 @cbaker6.
  • (Breaking Change) Change the following method parameter names: isUsingMongoDB -> usingMongoDB, isIgnoreCustomObjectIdConfig -> ignoringCustomObjectIdConfig, isUsingEQ -> usingEqComparator (#321), thanks to @cbaker6.
  • (Breaking Change) Change the following method parameter names: isUsingTransactions -> usingTransactions, isAllowingCustomObjectIds -> allowingCustomObjectIds, isUsingEqualQueryConstraint -> usingEqualQueryConstraint, isMigratingFromObjcSDK -> migratingFromObjcSDK, isDeletingKeychainIfNeeded -> deletingKeychainIfNeeded (#323), thanks to @cbaker6.

Fixes

  • Async/await methods that return void would not throw errors received from server (#334), thanks to @cbaker6.
  • 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 @cbaker6.

3.1.2

17 Jan 19:06
3c3a6e8
Compare
Choose a tag to compare

Full Changelog

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+. Developers using Swift <=5.5.1 or Xcode <=13.1 should use completion blocks or publishers (#320), thanks to @cbaker6.
  • 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 @cbaker6.
    • If you've added the score property to your ParseObject due to upgrading to 3.0.0, you can remove it if you don't need it. If you do needed it, you should conform to ParseQueryScorable; struct GameScore: ParseObject, ParseQueryScorable {

3.1.1

16 Jan 17:01
e6457a4
Compare
Choose a tag to compare

Full Changelog

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 @cbaker6.

3.1.0

08 Jan 17:30
b92667f
Compare
Choose a tag to compare

Full Changelog

New features

  • Add the ability to explain MongoDB queries by setting isUsingMongoDB = true for the respective explain query (#314), thanks to @cbaker6.

3.0.0

04 Jan 18:27
e6c2db2
Compare
Choose a tag to compare

Full Changelog

New features

  • Adds equalTo QueryConstraint along with ability to change the SDK default behavior of using $eq QueryConstraint parameter or not (#310), thanks to @cbaker6.
  • 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 @cbaker6.
  • (Breaking Change) Adds options to matchesText QueryConstraint along with the ability to see matching score. The compiler should recommend the new score property to all ParseObjects (#306), thanks to @cbaker6.
    • Changes you will need to make:
      • Add var score: Double? to all ParseObject's
  • Adds withCount query (#306), thanks to @cbaker6.

Improvements

  • (Breaking Change) Change boolean configuration parameters to match Swift conventions. The compilor should help with name changes (#311), thanks to @cbaker6.
    • Changes you will need to make to your ParseSwift initialization/configuration (you may need to "clean" your build folder after these changes):
      • deleteKeychainIfNeeded -> isDeletingKeychainIfNeeded
      • useTransactions -> isUsingTransactions
      • allowCustomObjectId -> isAllowingCustomObjectIds
  • 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 @cbaker6.

2.5.1

23 Dec 03:15
931ae8f
Compare
Choose a tag to compare

Full Changelog

Improvements

  • Reduce call sites by having all methods with variadic arguments call their array counterparts (#301), thanks to @cbaker6.

Fixes

  • Let additional headers accept [AnyHashable: Any] (#302), thanks to @cbaker6.
  • Throw .missingObjectId when missing the client detects a missing objectId instead of throwing an .unknown error (#300), thanks to @cbaker6.

2.5.0

12 Dec 00:31
ebaaf12
Compare
Choose a tag to compare

Full Changelog

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 @cbaker6.
  • Added convenience methods to convert ParseObject's to Pointer's for QueryConstraint's: !=, containedIn, notContainedIn, containedBy, containsAll (#298), thanks to @cbaker6.

2.4.0

08 Dec 22:40
369cf2a
Compare
Choose a tag to compare

Full Changelog

New features

  • Added additional methods to ParseRelation to make it easier to create and query relations (#294), thanks to @cbaker6.
  • 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 @cbaker6 .

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 @cbaker6.