ios:KVC的概述與使用

來源:互聯網
上載者:User

KVC,即:Key-value coding,它是一種使用字串標識符,間接訪問對象屬性的機制,它是很多技術的基礎。

主要的方法就兩個,setValue:forKey,valueForKey

在Programming Guide中說,使用KVC可以簡化代碼,但事實上使用起來,還是要看具體情況。

代碼執行個體:

1.首先定義兩個DataModel,這種DataModel定義是無法訪問屬性的

@interface BookData : NSObject {    NSString * bookName;    float price;    AuthorData * author;}@end@implementation BookData@end
@interface AuthorData : NSObject {    NSString * name;}@end@implementation AuthorData@end

2.使用KVC

BookData * book1 = [[BookData alloc] init];[book1 setValue:@"english" forKey:@"bookName"];[book1 setValue:@"20.0" forKey:@"price"];AuthorData * author1 = [[AuthorData alloc] init];[author1 setValue:@"tom" forKey:@"name"];[book1 setValue:author1 forKey:@"author"];NSLog(@"value=%@",[book1 valueForKey:@"bookName"]);NSLog(@"price=%f",[[book1 valueForKey:@"price"] floatValue]);NSLog(@"author=%@",[book1 valueForKeyPath:@"author.name"]);[book1 release];

3.注意事項,在使用的時候,Key值不能寫錯,也就是屬性的名字不能寫錯,大小寫也是敏感的。

4.回到了最初的問題,應該什麼時候使用KVC呢?

像上面的這種DataModel定義的方法,從程式員的角度講,我感覺是不夠規範的,起碼應該保證正常訪問,不管是用系統的get/set方式,或者是自己定義介面(getBookPrice,名字看起來友好一些的)。

在官方的Key-Value Observing Programming Guide中有段代碼,示範如何簡化代碼了,有興趣的朋友可以看看。

個人對KVC的理解,有什麼不對請指教。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.