發表文章

目前顯示的是 11月, 2018的文章

Swift - Category Extension

圖片
    在用 OC 寫App的時候,想要在現有的類別裡添加新的方法,又不想要用繼承的方式,那麼可以透過 Category 的方式來解決。     而在 Swift 中做到一樣的效果的時候,可以透過 Extension 的方式來達成。 例如:我要新增一個屬於我的顏色在 UIColor 裡面。 就可以透過 extension 一個屬於我的自訂顏色。 因此在 UIColor 中 就可以新增一個我們自訂的顏色。

iOS class 和 struct 的差異

這篇是整理一些 class 與  struck 差異文章,而且這個觀念在於面試時候也是一個特別喜歡問的問題。 而  class  與 struct 差異在哪裡,而我們會常看到所提出的點,大致是以下這三點:  struct 不能被繼承  struct 是 value type , class 是 reference type  struct 有 memberwise initializer   從下面一個例子來看 class A {     var number = 1 } var a = A () var b = a b . number = 2 這時候  a.number 和 b.number  都會是 2 當 var b = a 的這個時候是也將 a.number  也改變了 struct AA{     var number = 1 } var aa = AA () var bb = aa bb . number = 2 這個時候 aa.number 和 bb.number 個會是 1 和 2 而會有這個差異原因是, struct 是 value type 它不會去改變到其他值

[ iOS _ Swift 學習筆記 ] Dictionary 取值排序 (use Dictionary key value)

圖片
Swift DictionAry 取值排序 近期在開發專案的時候,遇到一個問題... 就是在取出 JSON 格式的物件時候,每一次取出來的時候是不會按照順序的, 因此在於資料的處理上就會變成,每次放的位置順序不一至。 所以在把拿到的 JSON 資料轉成物件存放記憶體後,再處理排序的問題。 解決方式是透過幫 Dictionary 排序來完成。 因此在快速 google 後參考了別人的文章後解決這個, Dictionary key 值排序的問題。 主要是透過以下這個方法  public func sorted(by areInIncreasingOrder: ((key: Key, value: value), (key: key, value: Value)) -> Bool ->[(key: Key, value: Value)] 這樣就能順利拿到排序好的  Dictionary 值了。 然後 Swift 3 和 Swift 4 的語法有變動。 因此在 firstKeyRealValue 和 second KeyRealValue   會和參考的文章有所不同。 參考資料來源 Developmnt of the app have a question. When i use JSON get objuct; Every time can't get same  order. So dispose data  first need get JSON data change objuct put in memory and  second solve order. But i get solve question means is use Dictionary. so i goole other people solve. Use Dictionary key value solve.  public func sorted(by areInIncreasingOrder: ((key: Key, value: value), (key: key, value: Value)) -> Bool ->[(key: Key, value: Value)]

iOS_開發 拿到 Tableview Cell 上的按鈕是哪一個 (Tableview Cell Button)

圖片
近期在開發 iOS App 時候使用到, tableview 而且在我的 tableview 上面會有 一個 Button 和一個 ImageView, 當我點選到圖案時會外跳出一個新的 ViewController 按下 Button 可以類似 加到我的最愛的功能。 這時候就是需要,去知道現在點到的是哪一個 tableview Cell,  一開始的想法是 透過 didSelectRowAt 來看到點選是哪一個 cell   (但這個是無法成功的) 因此在網路上查了資料。 學習到 可以透過 寫自己的 Protocol 來用自己的 delegate 來完成 首先開啟專案與一般的 tableview 一樣, 然後在 cellForRowAt 這個一個方法 要多添加一個 cell.delegate = self 然後再寫一個自己的  Protocol 這裡我們取名,SwiftTableViewDelegate, 這裡面有一個 func 來告訴我們按到哪一個 cell上的按鈕。 接下來在cell的那個 Class 裡面, 把 cell 按下去的按鈕 Action  添加我們剛才的 delegate 最後我們在這個 TableViewController 裡面添加這個自己的delegate 就可以透過這個自定義的方法拿到 目前點選到哪個cell 的 button  參考網頁: Swift: Using Protocols to Add Custom Behavior to a UITableViewCell