Difference between revisions of "IOS Swift"

From Hawk Wiki
Jump to: navigation, search
(Created page with "<pre brush:c> swift note: Basic Var var languageName: String = "Swift" Constant let version: Double = 1.0 :Int, :Bool let components = "~/Documents/Swift".pathComponents ["~", "...")
 
(Swift Tips and Best Practice)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
<pre brush:c>
+
===[[Swift Introduction|Swift Introduction]]===
swift note:
+
===[[Swift Intermediate|Swift Intermediate]]===
Basic
+
===[[Swift code snippets|Swift code snippets]]===
Var
+
===[[Swift Framework/Feature Tutorials]]===
var languageName: String = "Swift"
+
===[[Swift Tips and Best Practice]]===
Constant
+
let version: Double = 1.0
+
:Int, :Bool
+
  
let components = "~/Documents/Swift".pathComponents
+
==mac block outgoing request for ip==
["~", "Documents", "Swift"]
+
https://medium.com/@justmyfreak/blocking-outgoing-ip-on-mac-using-pf-ac12262248d2
 +
<pre>
 +
sudo vim /etc/pf.conf
 +
# add
 +
block drop from any to <IP Address>
 +
# save
 +
# apply change
 +
sudo pfctl -f /etc/pf.conf
  
let a = 3, b = 5
+
# verify info
let res = "\(a) times \(b) is \(a * b)"
+
sudo pfctl -s info
 
+
#if not enable, enable by
let dog = "dog"
+
sudo pfctl -e
var dog1 = dog + "1"
+
let a: Character = "a"
+
let b: Character = "b"
+
let ab = a + b
+
 
+
Array
+
var names = ["Anna", "Alex", 42]
+
var names: String[] = ["Anna", "Alex"]
+
var numOfLegs = ["ant": 6, "snake": 0]
+
for x in names {
+
 
+
}
+
for number in 1...5 {
+
 
+
}
+
for num in 0..<5 { //half close range
+
 
+
}
+
for (name, legs) in numOfLegs {
+
 
+
}
+
names += "Sam"
+
names += ["Hao", "Dan"]
+
names[0] = "x"
+
names[3...5] = ["x", "y", "z"]
+
numOfLegs["spider"] = 273
+
numOfLegs["spider"] = 8
+
Optionals
+
let possibleLegs: Int? = numOfLegs["aardvark"] //either get integer or nothing
+
if possibleLegs == nil {
+
 
+
} else {
+
  let legCount = possibleLegs! //forcing optional value to it's type
+
}
+
//A Simpler way
+
if let legCount = possibleLegs {
+
 
+
}
+
Switch legCount {
+
  case 0: //no break
+
  case 1:
+
  case ExecButton: //match object
+
  case 1...5:
+
  case 2,4,6,8:
+
  default: //required
+
}
+
func sayHello(name:String = "default") { //give a default value
+
 
+
}
+
Tuples
+
(404, "Not found")
+
(2, "Banana", 0.42)
+
let (statusCode, message) = refresh()
+
Closures
+
func repeat(count: Int, task: () -> ()) {
+
  for i in 0..<count {
+
    task()
+
  }
+
}
+
repeat(2, {
+
  println("hello")
+
})
+
repeat(2) {
+
  println("hello")
+
}
+
Class
+
class Vehicle {
+
  var numOfWheels = 0 //stored properties
+
  var description: String { //computed properties, has to be var
+
    get { //get is optional
+
      return "\(numOfWheels) wheels"
+
    }
+
  }
+
}
+
let someVehicle = Vehicle() //Auto alloc
+
//inheritance
+
class Bicycle: Vehicle {
+
  init() { //initializer
+
    super:init()
+
    numOfWheels = 2
+
  }
+
  override var speed: Double {
+
    willSet {
+
      if newValue > 65.0 {
+
        println('warning too fast')
+
      }
+
    }
+
    didSet {
+
      //oldValue available
+
    }
+
  }
+
}
+
struct Rect {
+
  var origin: Point
+
  var size: Size
+
  var area: Double {
+
    return size.width * size.height
+
  }
+
  func isBiggerThanRect(other: Rect) => Bool {
+
    return self.area > other.area
+
  }
+
}
+
struct and class
+
1. struct cannot inherite
+
2. class is passed by reference. struct is passed by value
+
Constant and Variables
+
let window = Window(1.0, 1.0)
+
//The reference is a constant, cannot change the reference value
+
can do window.x = 1.0
+
cannot do window = Window(2.0, 2.0)
+
 
+
var point1 = Point(x: 0.0, y: 0.0) //Point is struct. can do point1.x = 1.0
+
let point2 = Point(x: 0.0, y: 0.0) // cannot do point2.x = 1.0
+
  
 
</pre>
 
</pre>

Latest revision as of 23:39, 18 September 2019

Swift Introduction

Swift Intermediate

Swift code snippets

Swift Framework/Feature Tutorials

Swift Tips and Best Practice

mac block outgoing request for ip

https://medium.com/@justmyfreak/blocking-outgoing-ip-on-mac-using-pf-ac12262248d2

sudo vim /etc/pf.conf
# add 
block drop from any to <IP Address>
# save
# apply change
sudo pfctl -f /etc/pf.conf

# verify info 
sudo pfctl -s info
#if not enable, enable by
sudo pfctl -e