From 9160f6d2e7d96febe8146106acc1456efc2ccc64 Mon Sep 17 00:00:00 2001 From: Tim Davies Date: Fri, 15 Sep 2017 15:53:12 +0100 Subject: [PATCH] Update to Swift 4 and update Demo project for Xcode 9 --- TDBadgedCell.xcodeproj/project.pbxproj | 32 +++++++++++++++---- .../xcschemes/TDBadgedCell.xcscheme | 6 ++-- TDBadgedCell/TDBadgedCell.swift | 6 ++-- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/TDBadgedCell.xcodeproj/project.pbxproj b/TDBadgedCell.xcodeproj/project.pbxproj index 387bec8..0c4196b 100644 --- a/TDBadgedCell.xcodeproj/project.pbxproj +++ b/TDBadgedCell.xcodeproj/project.pbxproj @@ -145,18 +145,19 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Tim Davies"; TargetAttributes = { 22A9C13F1E460E1A0001F026 = { CreatedOnToolsVersion = 8.3; + LastSwiftMigration = 0900; ProvisioningStyle = Automatic; TestTargetID = 22F678781D80288B007D2FAE; }; 22F678781D80288B007D2FAE = { CreatedOnToolsVersion = 7.2; DevelopmentTeam = W376QLUK5J; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; }; }; @@ -262,7 +263,8 @@ PRODUCT_BUNDLE_IDENTIFIER = com.tmdvs.TDBadgedCellTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TDBadgedCell.app/TDBadgedCell"; }; name = Debug; @@ -279,7 +281,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.tmdvs.TDBadgedCellTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TDBadgedCell.app/TDBadgedCell"; }; name = Release; @@ -292,14 +295,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; @@ -328,6 +337,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -340,14 +350,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; @@ -369,6 +385,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -383,7 +400,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.tmdvs.TDBadgedCell; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -396,7 +414,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.tmdvs.TDBadgedCell; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -410,6 +429,7 @@ 22A9C1481E460E1B0001F026 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 22F678741D80288B007D2FAE /* Build configuration list for PBXProject "TDBadgedCell" */ = { isa = XCConfigurationList; diff --git a/TDBadgedCell.xcodeproj/xcuserdata/tim.xcuserdatad/xcschemes/TDBadgedCell.xcscheme b/TDBadgedCell.xcodeproj/xcuserdata/tim.xcuserdatad/xcschemes/TDBadgedCell.xcscheme index 59788cd..c7bb1b7 100644 --- a/TDBadgedCell.xcodeproj/xcuserdata/tim.xcuserdatad/xcschemes/TDBadgedCell.xcscheme +++ b/TDBadgedCell.xcodeproj/xcuserdata/tim.xcuserdatad/xcschemes/TDBadgedCell.xcscheme @@ -1,6 +1,6 @@ @@ -65,6 +66,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/TDBadgedCell/TDBadgedCell.swift b/TDBadgedCell/TDBadgedCell.swift index d3a9db6..b1e5e6b 100644 --- a/TDBadgedCell/TDBadgedCell.swift +++ b/TDBadgedCell/TDBadgedCell.swift @@ -76,7 +76,7 @@ open class TDBadgedCell: UITableViewCell { /// Generate the badge image internal func drawBadge() { // Calculate the size of our string - let textSize : CGSize = NSString(string: badgeString).size(attributes:[NSFontAttributeName:UIFont.boldSystemFont(ofSize:CGFloat(badgeFontSize))]) + let textSize : CGSize = NSString(string: badgeString).size(withAttributes:[NSAttributedStringKey.font:UIFont.boldSystemFont(ofSize:CGFloat(badgeFontSize))]) // Create a frame with padding for our badge let height = textSize.height + 10 @@ -110,8 +110,8 @@ open class TDBadgedCell: UITableViewCell { } NSString(string: badgeString).draw(in:CGRect(x:8, y:5, width:textSize.width, height:textSize.height), withAttributes: [ - NSFontAttributeName:UIFont.boldSystemFont(ofSize:CGFloat(badgeFontSize)), - NSForegroundColorAttributeName: badgeTextColor ?? UIColor.clear + NSAttributedStringKey.font:UIFont.boldSystemFont(ofSize:CGFloat(badgeFontSize)), + NSAttributedStringKey.foregroundColor: badgeTextColor ?? UIColor.clear ]) let badgeImage = UIGraphicsGetImageFromCurrentImageContext()!