Swift中使用KVC遇到的問題

????OC中使用KVC是因?yàn)镹SObject遵循了NSKeyValueCoding協(xié)議,而OC中所有的類包括自定義類的根類都是NSObject脯爪,所以都能使用KVC特性,但是Swift中的類其實(shí)是沒有統(tǒng)一的根類的(自定義一個(gè)類理論上也不需要繼承任何父類)拾因,所以KVC可以說是OC中的特性捏萍,????????

????要想在Swift中也使用KVC,我們就得將自定義的類繼承NSObject(理論上遵循NSKeyValueCoding協(xié)議也是可以的淹仑,但沒必要呀~)丙挽。但光是繼承是不夠的肺孵,比如下面這段代碼:

Example類已經(jīng)繼承自NSObject,這時(shí)候可以使用KVC功能獲取title的值颜阐,但是第16行代碼在調(diào)用的時(shí)候會(huì)拋出下面的運(yùn)行時(shí)異常:

this class is not key value coding-compliant for the key xxxx平窘,字面意思是沒有找到與鍵為“xxxx”兼容的鍵值對(duì),這就奇了怪了凳怨,明明定義了這個(gè)實(shí)例變量瑰艘,這里卻說找不到。

其實(shí)原因上面已經(jīng)說到過了:KVC是OC的特性肤舞!

那么我們?cè)赟wift類中定義的實(shí)例變量OC肯定是沒法訪問的了紫新,所以在調(diào)用value(forKey:)、setValue(forKey:)等KVC方法的時(shí)候就會(huì)報(bào)找不到的錯(cuò)李剖。

解決方法:在實(shí)例變量的前面加上@objc進(jìn)行修飾芒率,如下:

這樣就不會(huì)拋異常了。

解釋下@objc的作用:

1.允許函數(shù)或?qū)傩酝ㄟ^OC的消息機(jī)制進(jìn)行調(diào)用(即調(diào)用objc_msgSend篙顺,KVC其實(shí)也是基于runtime偶芍,swift貌似沒有OC的runtime機(jī)制的,Swift是靜態(tài)語言德玫,不過可以間接使用runtime機(jī)制匪蟀,后面再去花時(shí)間研究,所以上面問題的核心原理就在這里)

2.對(duì)Swift的函數(shù)或?qū)傩宰鲆粋€(gè)面向OC的翻譯化焕,比如@objc func test()->Void{}這個(gè)方法就會(huì)被翻譯成-(void)test{}

3.其他的就等你去發(fā)覺然后告訴我啦~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萄窜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撒桨,更是在濱河造成了極大的恐慌查刻,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凤类,死亡現(xiàn)場(chǎng)離奇詭異穗泵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谜疤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門佃延,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夷磕,你說我怎么就攤上這事履肃。” “怎么了坐桩?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵尺棋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我绵跷,道長(zhǎng)膘螟,這世上最難降的妖魔是什么成福? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮荆残,結(jié)果婚禮上奴艾,老公的妹妹穿的比我還像新娘。我一直安慰自己内斯,他們只是感情好蕴潦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嘿期,像睡著了一般品擎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上备徐,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天萄传,我揣著相機(jī)與錄音,去河邊找鬼蜜猾。 笑死秀菱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹭睡。 我是一名探鬼主播衍菱,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼肩豁!你這毒婦竟也來了脊串?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤清钥,失蹤者是張志新(化名)和其女友劉穎琼锋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祟昭,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缕坎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了篡悟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谜叹。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖搬葬,靈堂內(nèi)的尸體忽然破棺而出荷腊,到底是詐尸還是另有隱情,我是刑警寧澤急凰,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布停局,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏董栽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一企孩、第九天 我趴在偏房一處隱蔽的房頂上張望锭碳。 院中可真熱鬧,春花似錦勿璃、人聲如沸擒抛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歧沪。三九已至,卻和暖如春莲组,著一層夾襖步出監(jiān)牢的瞬間诊胞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工锹杈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撵孤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓竭望,卻偏偏與公主長(zhǎng)得像邪码,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咬清,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉闭专,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,679評(píng)論 0 9
  • 柳原在細(xì)雨迷蒙的碼頭上迎接她,他說她的綠色玻璃雨衣旧烧,像一只瓶影钉,又注了一句,藥瓶粪滤。她以為他在那里諷嘲她的孱弱斧拍,然而他...
    何必癡言簡(jiǎn)書絕閱讀 274評(píng)論 1 0
  • 昨天和一個(gè)前任無數(shù)的男性朋友看了前任三予权,一邊和我看電影昂勉,一邊還要說一句早知道我就叫我前任來看了,搞不好還會(huì)來個(gè)復(fù)合...
    一席雞毛閱讀 377評(píng)論 0 2
  • 1扫腺、人的大腦中有兩套系統(tǒng)岗照,自控系統(tǒng)和本能系統(tǒng),在大多數(shù)情況下自控系統(tǒng)幫助我們抵制來自本能系統(tǒng)發(fā)起的誘惑(嗜甜是人的...
    dongbo_tree閱讀 180評(píng)論 0 0
  • 財(cái)會(huì)人對(duì)高薪的追求正如他們向往銀行和會(huì)計(jì)師事務(wù)的工作場(chǎng)所一樣執(zhí)著。不過攒至,會(huì)計(jì)行業(yè)的階梯層級(jí)分明厚者,大部分財(cái)會(huì)人還處于...
    稅語閑言閱讀 1,773評(píng)論 0 1