In a viewController
usually there are many methods. In order make this part organized well. Here are the rules:
// MARK: - Life cycle
git config --global https.proxy http://127.0.0.1:1080 | |
git config --global https.proxy https://127.0.0.1:1080 | |
git config --global --unset http.proxy | |
git config --global --unset https.proxy | |
npm config delete proxy |
import UIKit | |
let jsonString = | |
""" | |
{ | |
"name": "Tim", | |
"age": "28" | |
} | |
""" |
/* 3.1 */ | |
// 1. Write Pseudo code find a given element in an array | |
func linearSearch<T: Equatable>(target: T, in array: [T]) { | |
for (index, element) in array.enumerated() { | |
if element == target { | |
print("Found \(element) at \(index)") | |
break | |
} else if (index == array.count) { | |
print("The target \(target) not found") |
extension Date { | |
func yearsCount(from date: Date) -> Int { | |
return Calendar.current.dateComponents([.year], from: date, to: self).year ?? 0 | |
} | |
func monthsCount(from date: Date) -> Int { | |
return Calendar.current.dateComponents([.month], from: date, to: self).month ?? 0 | |
} |
#!/bin/sh | |
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal | |
# make sure the output directory exists | |
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" | |
# Step 1. Build Device and Simulator versions | |
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build | |
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build |
set -e | |
REVEAL_ARCHIVE_IN_FINDER=true | |
FRAMEWORK_NAME="${PROJECT_NAME}" | |
SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework" | |
DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework" | |
UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal" |
class GradientLineView: UIView { | |
override func draw(_ rect: CGRect) { | |
if let context = UIGraphicsGetCurrentContext() { | |
let startPoint1 = CGPoint(x: 20, y: rect.height/2) | |
let endPoint1 = CGPoint(x: rect.width-120, y: rect.height/2) | |
context.setLineWidth(15) | |
context.move(to: startPoint1) | |
context.addLine(to: endPoint1) | |
context.setLineCap(.round) |
https://rink.hockeyapp.net/apps/aab3358c393742e2b1223c144755743a/app_versions/2166 |
enum ChineseRange { | |
case notFound, contain, all | |
} | |
extension String { | |
var findChineseCharacters: ChineseRange { | |
guard let a = self.range(of: "\\p{Han}*\\p{Han}", options: .regularExpression) else { | |
return .notFound | |
} | |
var result: ChineseRange |