Browse Source

【fix】【APPCenter】Crash编号:69

tangchao 10 months ago
parent
commit
6335f59a25

+ 13 - 9
PDF Office/PDF Master/Class/PDFWindowController/Tools/SKTypeSelectHelper.swift

@@ -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