190401 iOS Swift JSON

#今天是愚人節

使用 "ios swift json tutorial" 進行查詢,以下連結為搜尋結果第一位。
Codable JSON 教學 (Swift 4)

上文中推薦文章的第一篇連結如下
Codable in Swift 4.0

在 "Codable in Swift 4.0" 中,提供了蘋果官方 Codable 文件的連結,如下。
Codable

Codable 的宣告如下。

typealias Codable = Decodable & Encodable
typealias... 嗯,我承認我第一次遇見它。暫稱其為「型態別名」吧。

它的說明如下
A type that can convert itself into and out of an external representation.
可以在外部表示形式與自身互相轉換的一種形態。
在其延伸閱讀(See Also)中第一步的第一個項目為
Encoding and Decoding Custom Types

在其項目說明中有提到「像是 JSON 這樣的外部表示形式」。

讀著 「Encoding and Decoding Custom Types」這篇文章,文中突然出現 JSONEncoder
JSONEncoder

我就說嘛,Apple 的 Swift 怎麼可能讓我們萬丈高樓平地起。害我擔心是不是要採用對我來說是新技術所謂的 Codable。

嗯,沒錯,努力到現在才發現有個叫 JSONEncoder 的類別可用。在其範例中,直接將採用了 Codable 的物件轉成 JSON 格式。這時 Codable 的觀念就很重要。

快速捲到下方的 See Also,進入下方文章進行了解。
Using JSON with Custom Types

Swift API Design Guidelines


下載「Using JSON with Custom Types」中的範例程式。
第一個範例為 Read Data From Arrays
範例中有用到連續三個雙引號的語法
下面連結中包含有其說明
Lexical Structure

——————————————————————————————————————

String 在 Swift 中為 struct,但亦具有 NSString 的功效。

——————————————————————————————————————

改變鍵名(Change Key Names)

JSON:
{
    "product_name": "Apple" ,
    "product_price": 200
    "notes": "Washington"
}

Swift:
struct Product: Codable
{
    var name: String
    var cost: Int
    var notes: String

    private enum CodingKeys: String, CodingKey
    {
        case name = "product_name"
        case cost = "product_price"
        case notes
    }
}
Swift 中,可透過 CodingKey 來對應來源與目的鍵名。如上程式碼所示。要注意到的是,上面 notes 來源與目的是一致的,但還是要將其列在 CodingKey 中。

——————————————————————————————————————

原來之前要偵測文字輸入所使用的 addTarget,其實只要把該 func 改為 @IBAction,並在 Storyboard 中的 Connection Inspector 建立連結即可。

——————————————————————————————————————

隱藏 Soft Keyboard
view.endEditing( true )

——————————————————————————————————————









留言

這個網誌中的熱門文章

泰文子音與字形之間的變化

AUTOMAXX UP-5HX 使用心得