Releases: algolia/algoliasearch-client-swift
Releases · algolia/algoliasearch-client-swift
4.6
New features
- [offline] Support manual building of local indices (
MirroredIndexandOfflineIndex) - [offline] Support fallback logic when getting individual objects
Bug fixes
- (#168) Use network reachability to decide whether to perform online requests
- [offline] Fix race condition in instantiation of local index
4.5
Note: This new version brings a major improvement in the request retry logic (fallback mechanism used when one or more API hosts are down or unreachable). For that reason, an upgrade to this or a later version is strongly recommended for all users of this API Client.
New features
- (#158) Support the
responseFieldsquery parameter
Bug fixes
- (#157) New retry logic: stateful host statuses. This should help largely minimize the impact of DNS resolution failures or other long-lasting network problems. Note that the timeout for statuses can be controlled via the
AbstractClient.hostStatusTimeoutproperty.
Other changes
- Support more than one polygon in the
insidePolygonquery parameter. Warning: This breaks backward-compatibility for this specific parameter.
4.4
New features
- (#140) Support searching for facet values (
Index.searchForFacetValues(...)) - New method
AbstractQuery.clear()to remove all parameters
Other changes
- Open the
Queryclass (along with some of its methods) to allow subclassing in other libraries - Make available as a static utility the method to build a query string from a dictionary of parameters (
AbstractQuery.build(build(parameters:))
4.3
New features
- (#152) Add support for Algolia Places
4.2
New features
- Add support for a list of languages in the
ignorePluralsquery parameter. Warning: This breaks backward-compatibility for this specific parameter.
Bug fixes
- (#144) Fix compilation warning with Xcode 8.1
Other changes
- (Objective-C bridging) Switch back to only one
Queryclass. Note: This change is backward-compatible at the source level, provided that:- Objective-C code did not reference the
BaseQuerytype explicitly - Swift code did not reference the
_objc_Querytype explicitly
- Objective-C code did not reference the
4.1
New features
- Support the
createIfNotExistsparameter in partial updates - [offline] Offline-only indices
Bug fixes
- (#134) Use new format version when retrieving index settings
- Fix asynchronous dispatch of some completion handlers (were called outside the main thread)
Other changes
- Rename
attributesToIndextosearchableAttributes
4.0.1
- Fix
NSCopyingsupport in Objective-C - [Offline mode] Upgrade to Offline Core 1.0
4.0
This is a new major version, bringing incompatible changes, most of them due to Swift 3 support.
Note: You can find a detailed change log and migration instructions in the Migration guide to version 4.x.
Warning: This version requires Swift 3; it will not compile with Swift 2.x.
Warning: Cocoapods support for Swift 3 requires Cocoapods 1.1.0.rc.2 or later.
Swift 3 support
- Adapt to the new Foundation API
- Follow the Swift API Design Guidelines:
- Argument labels:
- Omit the first argument when the function name contains a complement (e.g.
addObject) or when the purpose is obvious (search: with a query) - Label the first argument when the purpose is not obvious and not contained in the method name (e.g.
batch(operations:)) - Label all completion handlers explicitly. This is the convention adopted by the system's libraries (e.g.
URLSession.dataTask(with:completionHandler:). Since the completion handler is likely to be a closure, the block can be moved out of the call site anyway, so the label is only required when passing a function/block reference.
- Omit the first argument when the function name contains a complement (e.g.
- Method names:
browseis now overloaded:browse(query:)andbrowse(from:).
- Rename enum members to lower camel case
- Rename constants to lower camel case (except notification names)
- Argument labels:
- Better Objective-C mappings
- Adjust method names when necessary for a better fit with this language
- Objective-C specific types are no longer visible in Swift (well, technically, they still are, but you have to look harder...)
- No underscore-suffixed properties any longer
- Better typing
- Use
Errorinstead ofNSErrorin completion handlers- Use dedicated error types
- Use
@discardableResultfor methods returningOperation - Use
Notification.Namefor notifications
- Use
- Prevent subclassing by not adopting the
openaccess modifier
Other breaking changes
- (Swift only) Better typing of complex properties through enums
- Rename
Index.indexNametoIndex.name. - Refactor index search cache handling into two properties to enable/disable (
searchCacheEnabled) it and set the expiration delay (searchCacheExpiringTimeInterval), and one method to clear it (clearSearchCache()) - Rename "slaves" to "replicas"
Other improvements
- Improve cancellation of
Index.waitTask() - Add tests for Objective-C bridging (online flavor only)
- Make timeouts configurable
Indexinstances are now shared across aClient
3.7
3.6
- Add explicit support for tvOS in the Cocoapods pod spec. (In fact, tvOS has been supported for a while in our code, but somehow never made it to the pod spec.) Note: not supported by the offline mode.
- Add support for HTML documentation generation via Jazzy
- Fix behavior of the
exhaustiveFacetsCountresponse field when using disjunctive faceting - Migrate the
User-AgentHTTP header to a new, more parseable format; now also includes the operating system's version. - Change value of
ErrorDomainconstant. Note: not a breaking change unless you relied on the value itself. - Update documentation
Offline mode
- Expose last successful sync date (property
MirroredIndex.lastSuccessfulSyncDate)