Skip to content

Instantly share code, notes, and snippets.

class Human {
static var name = "Mousa"
class var age : Int {
return 27
}
}
// Type Method : we accessed both properties without even creating an instance of Human Class.
print(Human.name)
class Human {
static var name = "Mousa"
class var age : Int {
return 27
}
}
// Type Method : we accessed both properties without even creating an instance of Human Class.
print(Human.name)
extension Date {
func toDateString() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
return dateFormatter.string(from: self)
}
func toTimeString() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm:ss"
extension Double {
func rounded(toPlaces places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
let number = 34.33356
print(number.rounded(toPlaces: 3))
extension Sequence {
func group<GroupingType: Hashable>(by key: (Iterator.Element) -> GroupingType) -> [[Iterator.Element]] {
var groups: [GroupingType: [Iterator.Element]] = [:]
var groupsOrder: [GroupingType] = []
forEach { element in
let key = key(element)
if case nil = groups[key]?.append(element) {
groups[key] = [element]
groupsOrder.append(key)
}
extension Array {
var shuffled: Array {
var elements = self
return elements.shuffle()
}
@discardableResult
mutating func shuffle() -> Array {
let count = self.count
indices.lazy.dropLast().forEach {
swapAt($0, Int(arc4random_uniform(UInt32(count - $0))) + $0)
extension String {
func toDouble() -> Double? {
return NumberFormatter().number(from: self)?.doubleValue
}
}
let number = "34.4"
print(number.toDouble())
extension String {
func strikeThrough() -> NSAttributedString {
let attributeString = NSMutableAttributedString(string: self)
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSMakeRange(0,attributeString.length))
return attributeString
}
}
// Usage
let hello = "Hello World".strikeThrough()
let firstSetOfNumbers: Set = [7, 5, 10, 6, 12]
let secondSetOfNumbers: Set = [5, 7, 9, 11, 13]
firstSetOfNumbers.sorted() // returns an ordered Set by value
// Output: [5, 6, 7, 10, 12]
firstSetOfNumbers.intersection(secondSetOfNumbers).sorted() // returns an intersected sorted set between two sets
// Output: [5, 7]
firstSetOfNumbers.subtracting(secondSetOfNumbers).sorted() // returns result of subtracted set from another set
// Output: [6, 10, 12]
secondSetOfNumbers.union(firstSetOfNumbers).sorted()
setOfNumbers.contains(8) // to check if set contains a specific value.