- https://medium.com/flawless-app-stories/a-complete-list-of-articles-on-unit-testing-with-swift-from-2017-9be8f046ef25
- https://albertodebortoli.com/2018/03/12/easy-view-controller-unit-testing/
- https://loic.land/2018/04/06/fuzzing.html
- https://www.raywenderlich.com/182118/behavior-driven-testing-tutorial-ios-quick-nimble
- https://clean-swift.com/effective-unit-testing/
- https://medium.com/bleeding-edge/writing-better-unit-tests-in-swift-part-one-e4a06fbc682b
- https://medium.com/@johnsundell/unit-testing-asynchronous-swift-code-9805d1d0ac5e
- https://medium.com/@johnsundell/mocking-in-swift-56a913ee7484
- https://learnappmaking.com/why-app-architecture-matters/
- https://academy.realm.io/posts/krzysztof-zablocki-mDevCamp-ios-architecture-mvvm-mvc-viper/
- https://martinmitrevski.com/2018/03/01/pragmatic-ios-app-architecture/
- https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/ 和訳: https://qiita.com/YKEI_mrn/items/67735d8ebc9a83fffd29
- https://jobandtalent.engineering/ios-architecture-an-state-container-based-approach-4f1a9b00b82e
- https://hackernoon.com/introducing-clean-swift-architecture-vip-770a639ad7bf
- https://www.youtube.com/watch?v=PdkWjdKOqfo
- https://readyset.build/ios-app-architecture-coordinators-8faade1763cf
- https://blog.prototypr.io/architecting-ios-development-at-zomato-cf894a7fa5e3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DERIVED_DATA_PATH=$(xcodebuild -showBuildSettings | grep PROJECT_TEMP_ROOT | grep -o '[a-zA-Z0-9/]*DerivedData') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Referred to the below heavily | |
// https://www.swiftbysundell.com/posts/building-dsls-in-swift | |
/* How to use: | |
subView.layout(on: parentView) { | |
$0.top <= $1.top | |
$0.bottom >= $1.bottom | |
$0.leading == $1.leading - 20.0 | |
$0.trailing == $1.trailing + 10.0 | |
} | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
struct Regex: ExpressibleByStringLiteral { | |
private let pattern: String | |
private var nsRegularExpression: NSRegularExpression? { | |
return try? NSRegularExpression(pattern: pattern) | |
} | |
typealias StringLiteralType = String |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
import PlaygroundSupport | |
// Model | |
struct Character: Decodable { | |
let name: String | |
} | |
// NW |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Swift safety | |
/// Type safety | |
let i: UInt8 = 1 | |
let x: Int = 4 | |
// Error | |
// let result = i*x |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
infix operator ??? | |
extension Optional where Wrapped == String { | |
var isEmptyOrNil: Bool { | |
return self == nil || self == "" | |
} | |
static func ???(lhs: String?, rhs: String) -> String { | |
guard let lhs = lhs, lhs != "" else { | |
return rhs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env sh | |
PLIST_BUDDY="/usr/libexec/PlistBuddy" | |
INFO_PLIST_PATH="app/Info.plist" | |
CURRENT_FULL_VERSION=$("$PLIST_BUDDY" -c "Print CFBundleVersion" "$INFO_PLIST_PATH") | |
CURRENT_MARKETING_VERSION=$("$PLIST_BUDDY" -c "Print CFBundleShortVersionString" "$INFO_PLIST_PATH") | |
ALL_INFO_PLIST_FILES=$(git grep --files-with-matches "CFBundleVersion" -- "*Info.plist") | |
for INFO_PLIST_FILE in $ALL_INFO_PLIST_FILES; do |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pre_install do |installer| | |
installer.pod_targets.each do |pod| | |
if !dynamic_frameworks.include?(pod.name) | |
puts "Overriding the static_framework? method for #{pod.name}" | |
def pod.static_framework?; | |
true | |
end | |
end | |
end | |
end |
OlderNewer