Swift 4 compatibility

This commit is contained in:
Chris Ballinger
2017-10-25 21:32:04 -07:00
parent 66a3a7e47c
commit 46df17afda
5 changed files with 37 additions and 18 deletions

1
.swift-version Normal file
View File

@@ -0,0 +1 @@
4.0

View File

@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "ParkedTextField"
s.version = "0.3.1"
s.version = "0.4.0"
s.summary = "A UITextField subclass with an appended constant text"
s.homepage = "https://github.com/gmertk/ParkedTextField"
s.screenshots = "https://dl.dropboxusercontent.com/u/4397140/pod-screenshots/ParkedTextField.gif"

View File

@@ -229,18 +229,20 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0720;
LastUpgradeCheck = 0820;
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = "Gunay Mert Karadogan";
TargetAttributes = {
A5EACD0E1B624754006E8A67 = {
CreatedOnToolsVersion = 6.4;
LastSwiftMigration = 0820;
LastSwiftMigration = 0900;
};
A5EACD301B6247CA006E8A67 = {
CreatedOnToolsVersion = 6.4;
LastSwiftMigration = 0900;
};
A5EACD441B6247CA006E8A67 = {
CreatedOnToolsVersion = 6.4;
LastSwiftMigration = 0900;
TestTargetID = A5EACD301B6247CA006E8A67;
};
};
@@ -361,14 +363,20 @@
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_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_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;
@@ -412,14 +420,20 @@
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_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_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;
@@ -463,7 +477,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
@@ -482,7 +496,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
};
name = Release;
};
@@ -499,7 +513,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
@@ -512,7 +526,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
};
name = Release;
};
@@ -532,7 +546,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
};
name = Debug;
@@ -549,7 +563,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
};
name = Release;

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0820"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -40,6 +40,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
@@ -69,6 +70,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"

View File

@@ -46,7 +46,7 @@ open class ParkedTextField: UITextField {
return ""
}
if text.hasSuffix(parkedText) {
return text[text.startIndex..<text.characters.index(text.endIndex, offsetBy: -parkedText.characters.count)]
return String(text[text.startIndex..<text.characters.index(text.endIndex, offsetBy: -parkedText.characters.count)])
} else {
return text
}
@@ -66,7 +66,7 @@ open class ParkedTextField: UITextField {
/// Constant part of the text. Defaults to the text field's font.
open var parkedTextFont: UIFont! {
@objc open var parkedTextFont: UIFont! {
didSet {
parkedText += ""
}
@@ -80,10 +80,10 @@ open class ParkedTextField: UITextField {
}
/// Attributes wrapper for font and color of parkedText
var parkedTextAttributes: [String: NSObject] {
var parkedTextAttributes: [NSAttributedStringKey: NSObject] {
return [
NSFontAttributeName: parkedTextFont,
NSForegroundColorAttributeName: parkedTextColor ?? textColor!
NSAttributedStringKey.font: parkedTextFont,
NSAttributedStringKey.foregroundColor: parkedTextColor ?? textColor!
]
}
@@ -147,7 +147,7 @@ open class ParkedTextField: UITextField {
// MARK: EditingChanged handler
func textChanged(_ sender: UITextField) {
@objc func textChanged(_ sender: UITextField) {
switch typingState {
case .start where text!.characters.count > 0:
text = typedText + parkedText
@@ -208,8 +208,10 @@ open class ParkedTextField: UITextField {
// https://stackoverflow.com/a/30404532/805882
fileprivate extension String {
func nsRange(from range: Range<String.Index>) -> NSRange {
let from = range.lowerBound.samePosition(in: utf16)
let to = range.upperBound.samePosition(in: utf16)
guard let from = range.lowerBound.samePosition(in: utf16),
let to = range.upperBound.samePosition(in: utf16) else {
return NSRange(location: NSNotFound, length: 0)
}
return NSRange(location: utf16.distance(from: utf16.startIndex, to: from),
length: utf16.distance(from: from, to: to))
}