Releases: algolia/algoliasearch-client-swift
Releases · algolia/algoliasearch-client-swift
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)
3.5
- New
multipleQueries()method at index level - Fix cancellation of requests: in some edge cases, the completion handler could be called after cancellation
- Fix potential crash when cancelling requests (unsafe assertions were made)
The following changes are for the offline mode only:
- New offline fallback strategy. Warning: breaking change: preventive search no longer supported.
- Offline requests now also work for disjunctive faceting
- The
searchMirror()method has been renamed tosearchOffline(), for better consistency with the newly introducedsearchOnline()method. - Improve detection of non-existent indices
3.4
- New
Client.isAlive()method (/1/isaliveendpoint) - Completion handler is now mandatory for multiple queries. Warning: breaking change
- (#88) Fix passing of
strategyparameter in multiple queries (should be POST instead of GET) - (#103) Fix URL encoding of path components (e.g. spaces in index names)
- Add test case for TCP connection dropping
3.3
- (#77) Support a list of languages as a value for the
removeStopWordsquery parameter. Warning: The type of the
corresponding property had to be degraded fromBool?toAnyObject?; as a consequence, the getter suffers from an
incompatible change (but not the setter). - (#79) Support
aroundRadius=allin query parameters - (#76) Support the
exactOnSingleWordQueryquery parameter - (#76) Support the
alternativesAsExactquery parameter - (#74) Support Swift 2.3
- (#75) Fix iTunes Connect submission issue when using Carthage: minimum iOS version is now 8.0
- Update documentation
3.2.1
- Fix OS X support in Cocoapods
3.2
- Support iOS 7.0
- Warning: Because Cocoapods uses dynamic frameworks and Swift is not supported in dynamic frameworks on iOS 7,
iOS 7 support is not possible through Cocoapods. - Warning: Due to unavailability of simulators earlier than iOS 8.1 in Xcode 7.3, iOS 7 remains untested.
- Warning: Because Cocoapods uses dynamic frameworks and Swift is not supported in dynamic frameworks on iOS 7,
- README updated
- [Test] Add test case for DNS time-out
Experimental features
- Offline mode. Note: requires the Algolia Search Offline Core library. Warning: beta version.