diff --git a/AutoCompleteTextField.swift b/AutoCompleteTextField.swift index 18f2ec7..c42e810 100644 --- a/AutoCompleteTextField.swift +++ b/AutoCompleteTextField.swift @@ -25,13 +25,13 @@ class AutoCompleteTableRowView:NSTableRowView{ } } - override var interiorBackgroundStyle:NSBackgroundStyle{ + override var interiorBackgroundStyle:NSView.BackgroundStyle{ get{ if self.isSelected { - return NSBackgroundStyle.dark + return NSView.BackgroundStyle.dark } else{ - return NSBackgroundStyle.light + return NSView.BackgroundStyle.light } } } @@ -49,14 +49,14 @@ class AutoCompleteTextField:NSTextField{ var matches:[String]? override func awakeFromNib() { - let column1 = NSTableColumn(identifier: "text") + let column1 = NSTableColumn(identifier: convertToNSUserInterfaceItemIdentifier("text")) column1.isEditable = false column1.width = popOverWidth - 2 * popOverPadding let tableView = NSTableView(frame: NSZeroRect) - tableView.selectionHighlightStyle = NSTableViewSelectionHighlightStyle.regular + tableView.selectionHighlightStyle = NSTableView.SelectionHighlightStyle.regular tableView.backgroundColor = NSColor.clear - tableView.rowSizeStyle = NSTableViewRowSizeStyle.small + tableView.rowSizeStyle = NSTableView.RowSizeStyle.small tableView.intercellSpacing = NSMakeSize(10.0, 0.0) tableView.headerView = nil tableView.refusesFirstResponder = true @@ -80,7 +80,7 @@ class AutoCompleteTextField:NSTextField{ contentViewController.view = contentView self.autoCompletePopover = NSPopover() - self.autoCompletePopover?.appearance = NSAppearance(named: NSAppearanceNameVibrantLight) + self.autoCompletePopover?.appearance = NSAppearance(named: NSAppearance.Name.vibrantLight) self.autoCompletePopover?.animates = false self.autoCompletePopover?.contentViewController = contentViewController self.autoCompletePopover?.delegate = self @@ -133,7 +133,7 @@ class AutoCompleteTextField:NSTextField{ self.complete(self) } - func insert(_ sender:AnyObject){ + @objc func insert(_ sender:AnyObject){ let selectedRow = self.autoCompleteTableView!.selectedRow let matchCount = self.matches!.count if selectedRow >= 0 && selectedRow < matchCount{ @@ -146,7 +146,7 @@ class AutoCompleteTextField:NSTextField{ } override func complete(_ sender: Any?) { - let lengthOfWord = self.stringValue.characters.count + let lengthOfWord = self.stringValue.count let subStringRange = NSMakeRange(0, lengthOfWord) //This happens when we just started a new word or if we have already typed the entire word @@ -203,7 +203,7 @@ extension AutoCompleteTextField:NSTableViewDelegate{ } func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { - var cellView = tableView.make(withIdentifier: "MyView", owner: self) as? NSTableCellView + var cellView = tableView.makeView(withIdentifier: convertToNSUserInterfaceItemIdentifier("MyView"), owner: self) as? NSTableCellView if cellView == nil{ cellView = NSTableCellView(frame: NSZeroRect) let textField = NSTextField(frame: NSZeroRect) @@ -213,10 +213,10 @@ extension AutoCompleteTextField:NSTableViewDelegate{ textField.isSelectable = false cellView!.addSubview(textField) cellView!.textField = textField - cellView!.identifier = "MyView" + cellView!.identifier = convertToOptionalNSUserInterfaceItemIdentifier("MyView") } - let attrs = [NSForegroundColorAttributeName:NSColor.black,NSFontAttributeName:NSFont.systemFont(ofSize: 13)] - let mutableAttriStr = NSMutableAttributedString(string: self.matches![row], attributes: attrs) + let attrs = [convertFromNSAttributedStringKey(NSAttributedString.Key.foregroundColor):NSColor.black,convertFromNSAttributedStringKey(NSAttributedString.Key.font):NSFont.systemFont(ofSize: 13)] + let mutableAttriStr = NSMutableAttributedString(string: self.matches![row], attributes: convertToOptionalNSAttributedStringKeyDictionary(attrs)) cellView!.textField!.attributedStringValue = mutableAttriStr return cellView @@ -232,3 +232,25 @@ extension AutoCompleteTextField:NSTableViewDataSource{ return self.matches!.count } } + +// Helper function inserted by Swift 4.2 migrator. +fileprivate func convertToNSUserInterfaceItemIdentifier(_ input: String) -> NSUserInterfaceItemIdentifier { + return NSUserInterfaceItemIdentifier(rawValue: input) +} + +// Helper function inserted by Swift 4.2 migrator. +fileprivate func convertToOptionalNSUserInterfaceItemIdentifier(_ input: String?) -> NSUserInterfaceItemIdentifier? { + guard let input = input else { return nil } + return NSUserInterfaceItemIdentifier(rawValue: input) +} + +// Helper function inserted by Swift 4.2 migrator. +fileprivate func convertFromNSAttributedStringKey(_ input: NSAttributedString.Key) -> String { + return input.rawValue +} + +// Helper function inserted by Swift 4.2 migrator. +fileprivate func convertToOptionalNSAttributedStringKeyDictionary(_ input: [String: Any]?) -> [NSAttributedString.Key: Any]? { + guard let input = input else { return nil } + return Dictionary(uniqueKeysWithValues: input.map { key, value in (NSAttributedString.Key(rawValue: key), value)}) +} diff --git a/AutoCompleteTextFieldClassic.podspec b/AutoCompleteTextFieldClassic.podspec index 113516e..5d6792d 100644 --- a/AutoCompleteTextFieldClassic.podspec +++ b/AutoCompleteTextFieldClassic.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AutoCompleteTextFieldClassic' - s.version = '1.0.6' + s.version = '1.0.7' s.license = 'MIT' s.summary = 'AutoCompleteTextField for OS X' @@ -10,6 +10,7 @@ Pod::Spec.new do |s| s.frameworks = 'Foundation' s.requires_arc = true + s.swift_version = '4.2' s.osx.deployment_target = '10.10' s.source_files = 'AutoCompleteTextField.swift' diff --git a/AutoCompleteTextFieldDemo.xcodeproj/project.pbxproj b/AutoCompleteTextFieldDemo.xcodeproj/project.pbxproj index 173c0ae..097f357 100644 --- a/AutoCompleteTextFieldDemo.xcodeproj/project.pbxproj +++ b/AutoCompleteTextFieldDemo.xcodeproj/project.pbxproj @@ -12,8 +12,6 @@ F1134A0B1C1BF03B00E3FB08 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = F1134A091C1BF03B00E3FB08 /* MainMenu.xib */; }; F1134A131C1BF68900E3FB08 /* AutoCompleteTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1134A121C1BF68900E3FB08 /* AutoCompleteTextField.swift */; }; F131DAB61D45AD0B0022B2C0 /* station_name.js in Resources */ = {isa = PBXBuildFile; fileRef = F131DAB51D45AD0B0022B2C0 /* station_name.js */; }; - F1BE5B4E1DE528A700276BB1 /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = F1BE5B4C1DE528A700276BB1 /* README.md */; }; - F1BE5B4F1DE528A700276BB1 /* screenshot.png in Resources */ = {isa = PBXBuildFile; fileRef = F1BE5B4D1DE528A700276BB1 /* screenshot.png */; }; F1D77FBE1C2B80E800457996 /* StationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D77FBD1C2B80E800457996 /* StationData.swift */; }; /* End PBXBuildFile section */ @@ -117,12 +115,12 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0710; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 1010; ORGANIZATIONNAME = fancy; TargetAttributes = { F1134A011C1BF03B00E3FB08 = { CreatedOnToolsVersion = 7.1.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 1010; }; }; }; @@ -152,7 +150,6 @@ F1134A081C1BF03B00E3FB08 /* Assets.xcassets in Resources */, F131DAB61D45AD0B0022B2C0 /* station_name.js in Resources */, F1134A0B1C1BF03B00E3FB08 /* MainMenu.xib in Resources */, - F1BE5B4F1DE528A700276BB1 /* screenshot.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -165,7 +162,6 @@ files = ( F1134A061C1BF03B00E3FB08 /* AppDelegate.swift in Sources */, F1D77FBE1C2B80E800457996 /* StationData.swift in Sources */, - F1BE5B4E1DE528A700276BB1 /* README.md in Sources */, F1134A131C1BF68900E3FB08 /* AutoCompleteTextField.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -192,14 +188,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -238,14 +242,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -278,7 +290,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = fancymax.AutoCompleteTextFieldDemo; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -291,7 +304,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = fancymax.AutoCompleteTextFieldDemo; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.2; }; name = Release; }; diff --git a/AutoCompleteTextFieldDemo/Model/StationData.swift b/AutoCompleteTextFieldDemo/Model/StationData.swift index 7174fae..e2b80f5 100644 --- a/AutoCompleteTextFieldDemo/Model/StationData.swift +++ b/AutoCompleteTextFieldDemo/Model/StationData.swift @@ -34,7 +34,7 @@ class Regex { func getMatches(_ input: String) -> [[String]]? { var res = [[String]]() - let myRange = NSMakeRange(0, input.characters.count) + let myRange = NSMakeRange(0, input.count) if let matches = self.internalExpression?.matches(in: input, options: [], range:myRange) { for match in matches @@ -42,7 +42,7 @@ class Regex { var groupMatch = [String]() for i in 1..