Skip to content

Commit 8afb1aa

Browse files
authored
Merge pull request #198 from piv199/swift3xcode8
Swift 3 support for Xcode 8 (all methods)
2 parents b049193 + 62d98ac commit 8afb1aa

File tree

87 files changed

+2095
-408
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+2095
-408
lines changed

.swiftlint.yml

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
excluded:
22
- Pods
3+
- EZSwiftExtensionsTests
34
line_length: 160
45
file_length: 1000
56
disabled_rules:
67
- type_body_length
78
- function_body_length
89
- type_name
910
- variable_name
10-
- variable_name_min_length
1111
- valid_docs
12-
- trailing_whitespace
1312
- todo
14-
13+
- variable_name_min_length

.travis.yml

+9-13
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
1-
language: swift
2-
3-
branches:
4-
only:
5-
- master
6-
7-
xcode_project: EZSwiftExtensions.xcodeproj
8-
xcode_scheme: EZSwiftExtensions-iOS
91
osx_image: xcode7.3
10-
xcode_sdk: iphonesimulator9.1
2+
language: objective-c
3+
4+
xcode_workspace: "EZSwiftExtensions.xcworkspace"
5+
xcode_scheme: "EZSwiftExtensions-iOS"
6+
xcode_sdk: "iphonesimulator"
117

12-
script:
13-
- xcodebuild clean build test -project EZSwiftExtensions.xcodeproj -scheme EZSwiftExtensions-iOS
8+
before_install:
9+
- brew install swiftlint
1410

15-
notifications:
16-
email: false
11+
before_script:
12+
- swiftlint

CONTRIBUTING.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Please ensure your pull request adheres to the following guidelines:
44

55
- Search previous extensions before making a new one, as yours may be a duplicate with a different name.
6-
- Make an individual pull request for each file changed.
6+
- Make an individual pull request for each file changed. PULL REQUESTS WITH LOTS OF UNRELATED BUNCH OF FILES WILL BE REJECTED INSTANTLY.
77
- Update the readme.md with your addition with clear and fun examples.
88
- Add a short documentation before your function describing what your code does:
99

@@ -38,5 +38,8 @@ Please ensure your pull request adheres to the following guidelines:
3838

3939
- Make sure your text editor is set to remove trailing whitespace.
4040
- Add a unit test for your function.
41+
- When adding new files make sure to include it in the /Sources folder and make sure its referenced in both EZSwiftExtensionsExamples and EZSwiftExtensions projects.
42+
- If you are not sure ask in our chat room https://gitter.im/EZSwiftExtensions/Lobby
43+
- Also check this: https://github.com/goktugyil/EZSwiftExtensions/issues/183
4144

4245
Your contributions are always welcome! Thank you for your contributions!

EZSwiftExtensions.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "EZSwiftExtensions"
3-
s.version = "1.5"
3+
s.version = "1.6"
44
s.summary = ":smirk: How Swift standard types and classes were supposed to work"
55
s.description = ":smirk: How Swift standard types and classes were supposed to work."
66
s.homepage = "https://github.com/goktugyil/EZSwiftExtensions"

EZSwiftExtensions.xcodeproj/project.pbxproj

+303-71
Large diffs are not rendered by default.

EZSwiftExtensions.xcodeproj/xcshareddata/xcschemes/EZSwiftExtensions-iOS.xcscheme

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
buildConfiguration = "Debug"
2727
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
2828
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29-
shouldUseLaunchSchemeArgsEnv = "YES">
29+
shouldUseLaunchSchemeArgsEnv = "YES"
30+
codeCoverageEnabled = "YES">
3031
<Testables>
3132
<TestableReference
3233
skipped = "NO">

EZSwiftExtensions/Info.plist

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<key>CFBundlePackageType</key>
1616
<string>FMWK</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>1.5</string>
18+
<string>1.6</string>
1919
<key>CFBundleSignature</key>
2020
<string>????</string>
2121
<key>CFBundleVersion</key>

EZSwiftExtensionsExample.xcodeproj/project.pbxproj

+28
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@
99
/* Begin PBXBuildFile section */
1010
C48E3F661D902B6700ED2DF7 /* NSUserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C48E3F651D902B6700ED2DF7 /* NSUserDefaultsExtension.swift */; };
1111
C85840ED1C43B05200595696 /* NSURLExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85840EC1C43B05200595696 /* NSURLExtensions.swift */; };
12+
E10A79321D6F2ED700735549 /* UIApplicationExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10A79311D6F2ED700735549 /* UIApplicationExtensions.swift */; };
13+
E10A79371D6F4BDB00735549 /* UITextFieldExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10A79361D6F4BDB00735549 /* UITextFieldExtensions.swift */; };
14+
E10A79441D6F505900735549 /* UIStoryboardExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10A79431D6F505900735549 /* UIStoryboardExtensions.swift */; };
15+
E10A79491D6F51E200735549 /* NSDictionaryExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10A79481D6F51E200735549 /* NSDictionaryExtensions.swift */; };
16+
E10A794B1D6F5C5300735549 /* NSBundleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10A794A1D6F5C5300735549 /* NSBundleExtensions.swift */; };
17+
E10A794D1D6F5C7300735549 /* NSUserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10A794C1D6F5C7300735549 /* NSUserDefaultsExtension.swift */; };
18+
E10A794F1D6F5CB700735549 /* UIUserInterfaceSizeClassExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10A794E1D6F5CB700735549 /* UIUserInterfaceSizeClassExtensions.swift */; };
1219
E15484E41CA2BD00003B030E /* ErrorTypeExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E15484E31CA2BD00003B030E /* ErrorTypeExtensions.swift */; };
1320
E1587FB01CCA41F400A0B071 /* UISwitchExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1587FAF1CCA41F400A0B071 /* UISwitchExtensions.swift */; };
1421
E17878141C86525300BC05AA /* NSTimerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E17878131C86525300BC05AA /* NSTimerExtensions.swift */; };
@@ -57,6 +64,13 @@
5764
/* Begin PBXFileReference section */
5865
C48E3F651D902B6700ED2DF7 /* NSUserDefaultsExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NSUserDefaultsExtension.swift; path = Sources/NSUserDefaultsExtension.swift; sourceTree = SOURCE_ROOT; };
5966
C85840EC1C43B05200595696 /* NSURLExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NSURLExtensions.swift; path = Sources/NSURLExtensions.swift; sourceTree = SOURCE_ROOT; };
67+
E10A79311D6F2ED700735549 /* UIApplicationExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIApplicationExtensions.swift; path = Sources/UIApplicationExtensions.swift; sourceTree = SOURCE_ROOT; };
68+
E10A79361D6F4BDB00735549 /* UITextFieldExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UITextFieldExtensions.swift; path = Sources/UITextFieldExtensions.swift; sourceTree = SOURCE_ROOT; };
69+
E10A79431D6F505900735549 /* UIStoryboardExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIStoryboardExtensions.swift; path = Sources/UIStoryboardExtensions.swift; sourceTree = SOURCE_ROOT; };
70+
E10A79481D6F51E200735549 /* NSDictionaryExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NSDictionaryExtensions.swift; path = Sources/NSDictionaryExtensions.swift; sourceTree = SOURCE_ROOT; };
71+
E10A794A1D6F5C5300735549 /* NSBundleExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NSBundleExtensions.swift; path = Sources/NSBundleExtensions.swift; sourceTree = SOURCE_ROOT; };
72+
E10A794C1D6F5C7300735549 /* NSUserDefaultsExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NSUserDefaultsExtension.swift; path = Sources/NSUserDefaultsExtension.swift; sourceTree = SOURCE_ROOT; };
73+
E10A794E1D6F5CB700735549 /* UIUserInterfaceSizeClassExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIUserInterfaceSizeClassExtensions.swift; path = Sources/UIUserInterfaceSizeClassExtensions.swift; sourceTree = SOURCE_ROOT; };
6074
E15484E31CA2BD00003B030E /* ErrorTypeExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ErrorTypeExtensions.swift; path = Sources/ErrorTypeExtensions.swift; sourceTree = SOURCE_ROOT; };
6175
E1587FAF1CCA41F400A0B071 /* UISwitchExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UISwitchExtensions.swift; path = Sources/UISwitchExtensions.swift; sourceTree = SOURCE_ROOT; };
6276
E17878131C86525300BC05AA /* NSTimerExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NSTimerExtensions.swift; path = Sources/NSTimerExtensions.swift; sourceTree = SOURCE_ROOT; };
@@ -137,12 +151,16 @@
137151
E1839E0E1BF79974002212C6 /* EZSwiftFunctions.swift */,
138152
E1839E0F1BF79974002212C6 /* IntExtensions.swift */,
139153
E17878151C86525A00BC05AA /* NSAttributedStringExtensions.swift */,
154+
E10A794A1D6F5C5300735549 /* NSBundleExtensions.swift */,
140155
E1839E101BF79974002212C6 /* NSDateExtensions.swift */,
156+
E10A79481D6F51E200735549 /* NSDictionaryExtensions.swift */,
141157
E1839E111BF79974002212C6 /* NSObjectExtensions.swift */,
142158
E17878131C86525300BC05AA /* NSTimerExtensions.swift */,
143159
C85840EC1C43B05200595696 /* NSURLExtensions.swift */,
160+
E10A794C1D6F5C7300735549 /* NSUserDefaultsExtension.swift */,
144161
E1839E121BF79974002212C6 /* StringExtensions.swift */,
145162
E17878191C86770E00BC05AA /* UIAlertControllerExtensions.swift */,
163+
E10A79311D6F2ED700735549 /* UIApplicationExtensions.swift */,
146164
E1D7CDCD1CF8FFB3008E4C07 /* UIBarButtonItemExtensions.swift */,
147165
E1839E131BF79974002212C6 /* UIButtonExtensions.swift */,
148166
E1839E141BF79974002212C6 /* UIColoredView.swift */,
@@ -153,8 +171,11 @@
153171
E1839E191BF79974002212C6 /* UIImageViewExtensions.swift */,
154172
E1839E1A1BF79974002212C6 /* UILabelExtensions.swift */,
155173
E178781D1C8678F900BC05AA /* UISliderExtensions.swift */,
174+
E10A79431D6F505900735549 /* UIStoryboardExtensions.swift */,
156175
E1587FAF1CCA41F400A0B071 /* UISwitchExtensions.swift */,
176+
E10A79361D6F4BDB00735549 /* UITextFieldExtensions.swift */,
157177
E1839E1B1BF79974002212C6 /* UITextViewExtensions.swift */,
178+
E10A794E1D6F5CB700735549 /* UIUserInterfaceSizeClassExtensions.swift */,
158179
E1839E1C1BF79974002212C6 /* UIViewControllerExtensions.swift */,
159180
E1839E1D1BF79974002212C6 /* UIViewExtensions.swift */,
160181
E17878251C86863900BC05AA /* UIWindowExtensions.swift */,
@@ -276,8 +297,10 @@
276297
E1839E2F1BF79974002212C6 /* UIButtonExtensions.swift in Sources */,
277298
C48E3F661D902B6700ED2DF7 /* NSUserDefaultsExtension.swift in Sources */,
278299
E1587FB01CCA41F400A0B071 /* UISwitchExtensions.swift in Sources */,
300+
E10A79491D6F51E200735549 /* NSDictionaryExtensions.swift in Sources */,
279301
E1839E301BF79974002212C6 /* UIColoredView.swift in Sources */,
280302
E1839E1E1BF79974002212C6 /* ArrayExtensions.swift in Sources */,
303+
E10A79441D6F505900735549 /* UIStoryboardExtensions.swift in Sources */,
281304
E1839E2D1BF79974002212C6 /* NSObjectExtensions.swift in Sources */,
282305
E17878141C86525300BC05AA /* NSTimerExtensions.swift in Sources */,
283306
E1839DB91BF79335002212C6 /* AppDelegate.swift in Sources */,
@@ -288,17 +311,22 @@
288311
E15484E41CA2BD00003B030E /* ErrorTypeExtensions.swift in Sources */,
289312
E1839E2A1BF79974002212C6 /* EZSwiftFunctions.swift in Sources */,
290313
E1839E391BF79974002212C6 /* UIViewExtensions.swift in Sources */,
314+
E10A794B1D6F5C5300735549 /* NSBundleExtensions.swift in Sources */,
291315
E1839E361BF79974002212C6 /* UILabelExtensions.swift in Sources */,
292316
E1839E281BF79974002212C6 /* CGRectExtensions.swift in Sources */,
293317
E1839E331BF79974002212C6 /* UIFontExtensions.swift in Sources */,
294318
C85840ED1C43B05200595696 /* NSURLExtensions.swift in Sources */,
295319
E1839E261BF79974002212C6 /* BoolExtensions.swift in Sources */,
296320
E1839E2B1BF79974002212C6 /* IntExtensions.swift in Sources */,
321+
E10A79321D6F2ED700735549 /* UIApplicationExtensions.swift in Sources */,
322+
E10A794F1D6F5CB700735549 /* UIUserInterfaceSizeClassExtensions.swift in Sources */,
297323
E1CB3C1C1C25FFA000DF77CD /* DoubleExtensions.swift in Sources */,
298324
E1839E341BF79974002212C6 /* UIImageExtensions.swift in Sources */,
325+
E10A794D1D6F5C7300735549 /* NSUserDefaultsExtension.swift in Sources */,
299326
E1839E241BF79974002212C6 /* BlockTap.swift in Sources */,
300327
E1839E1F1BF79974002212C6 /* BlockButton.swift in Sources */,
301328
E1839E311BF79974002212C6 /* UIColorExtensions.swift in Sources */,
329+
E10A79371D6F4BDB00735549 /* UITextFieldExtensions.swift in Sources */,
302330
E17878161C86525B00BC05AA /* NSAttributedStringExtensions.swift in Sources */,
303331
E1839E251BF79974002212C6 /* BlockWebView.swift in Sources */,
304332
E1839E231BF79974002212C6 /* BlockSwipe.swift in Sources */,

EZSwiftExtensionsTests/EZSwiftExtensionsTestsArray.swift EZSwiftExtensionsTests/ArrayTests.swift

+27-19
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// EZArrayExtensionsTests.swift
2+
// ArrayTests.swift
33
// EZSwiftExtensions
44
//
55
// Created by Valentino Urbano on 28/01/16.
@@ -9,7 +9,7 @@
99
import XCTest
1010
import EZSwiftExtensions
1111

12-
class EZSwiftExtensionsTestsArray: XCTestCase {
12+
class ArrayTests: XCTestCase {
1313
var numberArray: [Int] = []
1414

1515
override func setUp() {
@@ -97,22 +97,14 @@ class EZSwiftExtensionsTestsArray: XCTestCase {
9797

9898
func testEach() {
9999
var sameArray: [Int] = []
100-
numberArray.each { sameArray.append($0) }
100+
numberArray.forEach { sameArray.append($0) }
101101
XCTAssertEqual(numberArray, sameArray)
102102

103103
var indexArray: [Int] = []
104-
numberArray.each { indexArray.append($0.0) }
104+
numberArray.forEach { indexArray.append($0.0) }
105105
XCTAssertEqual(indexArray, [Int](0..<numberArray.count))
106106
}
107107

108-
func testMapFilter() {
109-
let filtered = numberArray.mapFilter { number -> String? in
110-
return number == 1 ? String(number) : nil
111-
}
112-
113-
XCTAssertEqual(filtered.count, 2)
114-
}
115-
116108
func testUnion() {
117109
let a = [Int](0...2), b = [Int](3...5), c = [Int](6...8)
118110
let union = a.union(b, c)
@@ -134,28 +126,44 @@ class EZSwiftExtensionsTestsArray: XCTestCase {
134126
XCTAssertEqual(difference, [0, 5, 6, 7, 8])
135127
}
136128

129+
/// WARNING: [SE-0121] Remove Optional Comparison Operators
137130
func testOptionalEquatable() {
138131
let a: [Int]? = [1, 2, 3]
139132
let b: [Int]? = [1, 2, 3]
140-
let c: [Int]? = nil
133+
// let c: [Int]? = nil
141134

142-
XCTAssertTrue(a == b)
143-
XCTAssertFalse(a == c)
135+
XCTAssertTrue(a! == b!)
136+
// XCTAssertFalse(a! == c!)
144137
}
145-
138+
146139
func testShuffle() {
147140
let copyArray = numberArray
148-
141+
149142
numberArray.shuffle()
150-
143+
151144
XCTAssertNotNil(numberArray)
152145
XCTAssertEqual(numberArray.count, copyArray.count)
153-
146+
154147
for e in copyArray {
155148
if let i = numberArray.index(of: e) {
156149
numberArray.remove(at: i)
157150
}
158151
}
159152
XCTAssertEqual(numberArray, [])
160153
}
154+
155+
func testDecompose() {
156+
let a: [Int] = []
157+
let b: [Int] = [1]
158+
let c: [Int] = [1, 2]
159+
XCTAssertNil(a.decompose())
160+
XCTAssertTrue(b.decompose()!.head == 1 && b.decompose()!.tail == [])
161+
XCTAssertTrue(c.decompose()!.head == 1 && c.decompose()!.tail == [2])
162+
163+
let copyArray = numberArray
164+
let head = copyArray.first!
165+
let tail = copyArray.dropFirst()
166+
XCTAssertTrue(numberArray.decompose()!.head == head)
167+
XCTAssertTrue(numberArray.decompose()!.tail == tail)
168+
}
161169
}

EZSwiftExtensionsTests/EZSwiftExtensionsTestsBlockButton.swift EZSwiftExtensionsTests/BlockButtonTests.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// EZSwiftExtensionsTestsBlockButton.swift
2+
// BlockButtonTests.swift
33
// EZSwiftExtensions
44
//
55
// Created by Valentino Urbano on 28/01/16.
@@ -9,7 +9,7 @@
99
import XCTest
1010
@testable import EZSwiftExtensions
1111

12-
class EZSwiftExtensionsTestsBlockButton: XCTestCase {
12+
class BlockButtonTests: XCTestCase {
1313
var blockButton: BlockButton!
1414

1515
override func setUp() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//
2+
// BlockLongPressTests.swift
3+
// EZSwiftExtensions
4+
//
5+
// Created by Goktug Yilmaz on 8/25/16.
6+
// Copyright © 2016 Goktug Yilmaz. All rights reserved.
7+
//
8+
9+
import XCTest
10+
11+
class BlockLongPressTests: XCTestCase {
12+
13+
14+
15+
}
16+
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//
2+
// BlockPanTests.swift
3+
// EZSwiftExtensions
4+
//
5+
// Created by Goktug Yilmaz on 8/25/16.
6+
// Copyright © 2016 Goktug Yilmaz. All rights reserved.
7+
//
8+
9+
import XCTest
10+
11+
class BlockPanTests: XCTestCase {
12+
13+
14+
15+
}
16+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// BlockPinchTests.swift
3+
// EZSwiftExtensions
4+
//
5+
// Created by Valentino Urbano on 28/01/16.
6+
// Copyright © 2016 Goktug Yilmaz. All rights reserved.
7+
//
8+
9+
import XCTest
10+
11+
class BlockPinchTests: XCTestCase {
12+
13+
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// BlockSwipeTests.swift
3+
// EZSwiftExtensions
4+
//
5+
// Created by Valentino Urbano on 28/01/16.
6+
// Copyright © 2016 Goktug Yilmaz. All rights reserved.
7+
//
8+
9+
import XCTest
10+
11+
class BlockSwipeTests: XCTestCase {
12+
13+
14+
}
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// BlockTapTests.swift
3+
// EZSwiftExtensions
4+
//
5+
// Created by Valentino Urbano on 28/01/16.
6+
// Copyright © 2016 Goktug Yilmaz. All rights reserved.
7+
//
8+
9+
import XCTest
10+
11+
class BlockTapTests: XCTestCase {
12+
13+
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// BlockWebViewTests.swift
3+
// EZSwiftExtensions
4+
//
5+
// Created by Valentino Urbano on 28/01/16.
6+
// Copyright © 2016 Goktug Yilmaz. All rights reserved.
7+
//
8+
9+
import XCTest
10+
11+
class BlockWebViewTests: XCTestCase {
12+
13+
14+
}

0 commit comments

Comments
 (0)