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