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:
browse
is 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
Error
instead ofNSError
in completion handlers- Use dedicated error types
- Use
@discardableResult
for methods returningOperation
- Use
Notification.Name
for notifications
- Use
- Prevent subclassing by not adopting the
open
access modifier
Other breaking changes
- (Swift only) Better typing of complex properties through enums
- Rename
Index.indexName
toIndex.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
Index
instances are now shared across aClient