|
@@ -34,10 +34,15 @@ class SKTypeSelectHelper: NSObject, NSTextDelegate{
|
|
|
var isProcessing = false
|
|
|
var searchString: String = ""
|
|
|
var timer: Timer?
|
|
|
- lazy var searchCache: NSArray? = {
|
|
|
- var cache: NSArray = (self.delegate?.typeSelectHelperSelectionStrings(self))!
|
|
|
- return cache
|
|
|
- }()
|
|
|
+ private var searchCache_: NSArray?
|
|
|
+ var searchCache: NSArray? {
|
|
|
+ get {
|
|
|
+ if self.searchCache_ == nil {
|
|
|
+ self.searchCache_ = self.delegate?.typeSelectHelperSelectionStrings(self)
|
|
|
+ }
|
|
|
+ return self.searchCache_
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
deinit {
|
|
|
NotificationCenter.default.removeObserver(self)
|
|
@@ -54,7 +59,7 @@ class SKTypeSelectHelper: NSObject, NSTextDelegate{
|
|
|
init(matchOption aMatchOption: SKTypeSelectMatchOption) {
|
|
|
super.init()
|
|
|
delegate = nil
|
|
|
- searchCache = nil
|
|
|
+ self.searchCache_ = nil
|
|
|
searchString = ""
|
|
|
matchOption = aMatchOption
|
|
|
isProcessing = false
|
|
@@ -65,7 +70,7 @@ class SKTypeSelectHelper: NSObject, NSTextDelegate{
|
|
|
}
|
|
|
|
|
|
func rebuildTypeSelectSearchCache() {
|
|
|
- searchCache = nil
|
|
|
+ self.searchCache_ = nil
|
|
|
}
|
|
|
|
|
|
func handleEvent(_ keyEvent: NSEvent) -> Bool {
|
|
@@ -215,7 +220,7 @@ class SKTypeSelectHelper: NSObject, NSTextDelegate{
|
|
|
}
|
|
|
}
|
|
|
func indexOfMatchedItemAfterIndex(_ selectedIndex: Int) -> Int? {
|
|
|
- let labelCount = searchCache?.count
|
|
|
+ let labelCount = searchCache?.count ?? 0
|
|
|
if labelCount == 0 {
|
|
|
return nil
|
|
|
}
|
|
@@ -238,8 +243,7 @@ class SKTypeSelectHelper: NSObject, NSTextDelegate{
|
|
|
looped = true
|
|
|
}
|
|
|
|
|
|
- let label: String = searchCache?[labelIndex] as! String
|
|
|
-
|
|
|
+ let label = searchCache?[labelIndex] as? String ?? ""
|
|
|
if matchOption == .SKFullStringMatch {
|
|
|
if label.caseInsensitiveCompare(searchString) == .orderedSame {
|
|
|
return labelIndex
|