Swift
Extension - 2
dion_K
2020. 12. 14. 17:17
728x90
1. Adding Initializer
// 년,월,일을 파라미터로 받아서 날짜를 생성하는 생성자를 익스텐션으로 추가해보겠습니다.
extension Date {
init?(year: Int, month: Int, day: Int) {
let cal = Calendar.current
var comp = DateComponents()
comp.year = year
comp.month = month
comp.day = day
guard let date = cal.date(from: comp) else {
return nil
}
self = date
}
}
Date(year: 2020, month: 12, day: 14)
// UI컬러 클래스에 새로운 생성자를 추가해보곘습니다.
// extension으로 클래스에 생성자를 추가할때는 반드시 간편 생성자로 구현해야 합니다.
extension UIColor {
convenience init(red: Int, green: Int, blue: Int) {
self.init(red: CGFloat(red) / 255, green: CGFloat(green) / 255, blue: CGFloat(blue) / 255, alpha: 1.0)
}
}
UIColor(red: 0, green: 0, blue: 255)
struct Size {
var width = 0.0
var height = 0.0
}
extension Size {
init(value: Double) {
width = value
height = value
}
}
Size()
Size(width: 12, height: 34)
2. Adding Subscript
extension String {
subscript(idx: Int) -> String? {
guard (0..<count).contains(idx) else {
return nil
}
let target = index(startIndex, offsetBy: idx)
return String(self[target])
}
}
let str = "Swift"
str[1]
str[100]
extension Date {
subscript(component: Calendar.Component) -> Int? {
let cal = Calendar.current
return cal.component(component, from: self)
}
}
let today = Date()
today[.year]
today[.month]
today[.day]
728x90