SearchOperation create child when exec

This commit is contained in:
Chris Li 2016-09-13 14:09:53 -04:00
parent 9181d34c0f
commit 71e43c60e4
3 changed files with 14 additions and 4 deletions

View File

@ -49,7 +49,7 @@
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.8.361</string> <string>1.8.369</string>
<key>ITSAppUsesNonExemptEncryption</key> <key>ITSAppUsesNonExemptEncryption</key>
<false/> <false/>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>

View File

@ -21,7 +21,7 @@
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.8.364</string> <string>1.8.372</string>
<key>NSExtension</key> <key>NSExtension</key>
<dict> <dict>
<key>NSExtensionMainStoryboard</key> <key>NSExtensionMainStoryboard</key>

View File

@ -10,8 +10,14 @@ import Operations
class SearchOperation: GroupOperation { class SearchOperation: GroupOperation {
private(set) var results = [SearchResult]() private(set) var results = [SearchResult]()
let searchTerm: String
init(searchTerm: String) { init(searchTerm: String) {
self.searchTerm = searchTerm
super.init(operations: [])
}
override func execute() {
let searches: [BookSearch] = ZimMultiReader.shared.readers.keys.map({ BookSearch(zimID: $0, searchTerm: searchTerm) }) let searches: [BookSearch] = ZimMultiReader.shared.readers.keys.map({ BookSearch(zimID: $0, searchTerm: searchTerm) })
let sort = Sort() let sort = Sort()
searches.forEach { (search) in searches.forEach { (search) in
@ -19,12 +25,16 @@ class SearchOperation: GroupOperation {
operation.requirement += dependency.results operation.requirement += dependency.results
}) })
} }
super.init(operations: searches + [sort])
sort.addObserver(DidFinishObserver { [unowned self] (operation, errors) in sort.addObserver(DidFinishObserver { [unowned self] (operation, errors) in
guard let operation = operation as? Sort else {return} guard let operation = operation as? Sort else {return}
self.results = operation.requirement self.results = operation.requirement
}) })
addOperations(searches)
addOperation(sort)
super.execute()
} }
} }