[爆卦]nil是什麼意思是什麼?優點缺點精華區懶人包

雖然這篇nil是什麼意思鄉民發文沒有被收入到精華區:在nil是什麼意思這個話題中,我們另外找到其它相關的精選爆讚文章

在 nil是什麼意思產品中有1篇Facebook貼文,粉絲數超過2萬的網紅紀老師程式教學網,也在其Facebook貼文中提到, [iOS Programming] 什麼是 Key-Value Coding? 剛剛收到班上同學的來信,說他在網路上看到一個名詞,叫 Key-Value Coding。問我什麼是 Key-Value Coding。由於這個主題比較冷僻,用到的機會也不能算多。在只有 48 小時得把所有 iOS SD...

 同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...

  • nil是什麼意思 在 紀老師程式教學網 Facebook 的最讚貼文

    2012-05-22 18:31:50
    有 11 人按讚

    [iOS Programming] 什麼是 Key-Value Coding?

    剛剛收到班上同學的來信,說他在網路上看到一個名詞,叫 Key-Value Coding。問我什麼是 Key-Value Coding。由於這個主題比較冷僻,用到的機會也不能算多。在只有 48 小時得把所有 iOS SDK 教完的壓力下,這個主題被我捨棄了。沒想到同學們還是很用功啊!看來我不講是不行的了(所以說,出來混,一定要還的...)。

    先做個定義吧:「Key-Value Coding 就是一種可以用『字串』,來存取物件內某個『屬性欄位』的技巧」。

    假設你有一個類別叫做「People」,裡面有兩個屬性欄位「name」與「addr」定義如下:

    @interface People : NSObject

    {
    NSString *name;
    NSString *addr;
    }
    @property NSString *name;
    @property NSString *addr;

    @end

    然後你用 People 宣告了一個名為 robert 的物件,並指定初值給它。如下所示:
    People *robert = [[People alloc] init];
    robert.name = @"Robert";
    robert.addr = @"台北市忠孝東路 1 號";

    若你要存取「name」與「addr」屬性,你得這麼寫:
    NSLog(@"%@", robert.name); // 印出 robert 物件 name 屬性內容 --> "Robert"
    NSLog(@"%@", robert.addr); // 印出 robert 物件 addr 屬性內容 --> "台北市忠孝東路..."

    使用 Key-Value Coding,你可以這麼存取屬性值:
    NSLog(@"%@", [robert valueForKey:@"name"]); // 存取到 robert 內的 name 欄位。

    你有沒有注意到,欄位名稱「name」被字串化了!也就是說,只要你把 "name" 改為 "addr",抓到的欄位值就是 robert.addr 的了。

    這有什麼好處呢?舉例來說,你製作了一個資料庫 App,有個下拉式清單,列出所有可以讓使用者選擇的欄位名稱。如「姓名」、「住址」...。使用者只要選擇了一個欄位,如:住址,就可以印出當前物件內,住址那一欄。如果你先把「姓名」與對應的欄位名稱「name」、以及「住址」與對應的欄位名稱「addr」…以「鍵值對(Key-Value Pair)」的方式存放好:

    Key Value
    ------------
    姓名 name
    住址 addr
    ...

    在 Objective-C 內,鍵值對是用 NSDictionary 類別存放的:
    NSArray *keys = [[NSArray alloc] initWithObjects: @"姓名", @"住址", …nil];
    NSArray *values = [[NSArray alloc] initWithObjects: @"name", @"addr", … nil];
    NSDictionary *dic = [[NSDictionary alloc] initWithObjecs:values forKeys:keys];

    則 Key 可以拿去當下拉式功能表要顯示的內容。當使用者選擇了其中一項,如:「姓名」,我就可以拿回到「鍵值對」的物件,查到它對應的值是「"name"」。接著,我就可以用所謂的「Key-Value Coding」這招,抓出當前物件姓名欄位的值:
    NSLog(@"%@", [robert valueForKey: theValue]); // theValue 代表由「鍵值對」中查到的值「"name"」。

    若使用者選擇的是「住址」,則 theValue 會被填入「"addr"」,上述程式碼不用改一個字,照常抓出 robert 物件內住址欄位的值。

    您看出「Key-Value Coding」的價值了嗎?萬一 People 類別內有上百個欄位,我要印出特定欄位的值,都是用下列這一道就解決了:
    NSLog(@"%@", [robert valueForKey:@"name"]);

    不用 Key-Value Coding、把物件的屬性欄位「字串化」的話,想存取特定欄位,你一定得寫一堆 if ~ else:
    if (選中的欄位 == 「姓名」)
    fieldToBePrinted = robert.name;
    else if (選中的欄位 == 「住址」)
    fieldToBePrinted = robert.addr;
    else


    這樣,大家知道 Objective-C 內的 Key-Value Coding 是什麼意思了嗎?

  • nil是什麼意思 在 コバにゃんチャンネル Youtube 的精選貼文

    2021-10-01 13:19:08

  • nil是什麼意思 在 大象中醫 Youtube 的最讚貼文

    2021-10-01 13:10:45

  • nil是什麼意思 在 大象中醫 Youtube 的精選貼文

    2021-10-01 13:09:56

你可能也想看看

搜尋相關網站