Swift基礎(chǔ) - KVC/遍歷構(gòu)造方法

五.KVC構(gòu)造方法:

  1. KVC構(gòu)造函數(shù),利用運行時的機制,在運行的時候,給對象動態(tài)調(diào)用setValue forKey方法,來給屬性賦值;
  2. 對象需要實例化成功:須在self初始化完成后調(diào)用KVC(也就是super.init()后面)
  3. swift中,int屬于OC中的基本數(shù)據(jù)類型,基本數(shù)據(jù)類型與KVC不兼容
  4. 基本數(shù)據(jù):類型在使用KVC情況下,應(yīng)使用非可選項并且初始化,需要在給swift中給基本數(shù)據(jù)類型一個默認值,默認值不能為nil;
  5. 當我們給了初始值的時候,KVC就能找到基本類型屬性

綜上:KVC賦值的注意點:

  1. super.init()須在KVC方法前調(diào)用,完成對象初始化;
  2. swift的KVC不支持基本數(shù)據(jù)類型,應(yīng)在KVC前給基本數(shù)據(jù)類型賦值一個初始值,且不能為nil;
  3. 或者重寫
    setValue(value:AnyObject?, forUndefinedKey)key:String)

override setValue(value:AnyObject?, forUndefinedKey key:String)

            {不要調(diào)用super方法;
           super的這個方法就是提供一個崩潰,告訴你哪個值沒                     
           有賦值}
  1. 如果實現(xiàn)了 forUndefinedKey,會保證 setValuesForKeysWithDictionary繼續(xù)遍歷后續(xù)的 key
  2. 父類實現(xiàn)了forUndefinedKey這個方法,子類就可以不實現(xiàn)了
  3. 執(zhí)行步驟:
  • 先setValue(value:AnyObject?, key:String)
  • 發(fā)現(xiàn)屬性中某個屬性沒有的時候,會調(diào)用setValue(value:AnyObject?, forUndefinedKey key:String)
  1. 子類的KVC構(gòu)造函數(shù)父類實現(xiàn)了KVC,子類可以不去實現(xiàn)KVC;
  2. 當子類調(diào)用KVC時,沒有提示,需要強寫;

六.便利構(gòu)造函數(shù):

  1. 便利構(gòu)造函數(shù)的關(guān)鍵字:convenience init?(參數(shù)){ }
  2. 便利構(gòu)造函數(shù)可能返回一個nil
  3. 便利構(gòu)造函數(shù)是為一個需要借助于調(diào)用self的其他構(gòu)造函數(shù),而不是super.init
  4. 便利構(gòu)造函數(shù)不可以重寫
  5. 便利構(gòu)造函數(shù)能夠?qū)鬟f進來的參數(shù)進行判斷,如果滿足條件,則返回一個值,不滿足返回另外一個值(例如nil)
  6. 調(diào)用便利構(gòu)造方法創(chuàng)建的對象,對象本身是可選項,調(diào)用屬性時,對象后面加個?:p?.name
  7. 子類可以繼承父類的便利構(gòu)造方法,但是不能重寫;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奖蔓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件追葡,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機戳护,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涤垫,“玉大人姑尺,你說我怎么就攤上這事◎疴” “怎么了切蟋?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長榆芦。 經(jīng)常有香客問我柄粹,道長,這世上最難降的妖魔是什么匆绣? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任驻右,我火速辦了婚禮,結(jié)果婚禮上崎淳,老公的妹妹穿的比我還像新娘堪夭。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布森爽。 她就那樣靜靜地躺著恨豁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪爬迟。 梳的紋絲不亂的頭發(fā)上橘蜜,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音付呕,去河邊找鬼计福。 笑死,一個胖子當著我的面吹牛徽职,可吹牛的內(nèi)容都是我干的象颖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼活箕,長吁一口氣:“原來是場噩夢啊……” “哼力麸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起育韩,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤克蚂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后筋讨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體埃叭,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年悉罕,在試婚紗的時候發(fā)現(xiàn)自己被綠了赤屋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡壁袄,死狀恐怖类早,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗜逻,我是刑警寧澤涩僻,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站栈顷,受9級特大地震影響逆日,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萄凤,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一室抽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧靡努,春花似錦坪圾、人聲如沸晓折。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽已维。三九已至,卻和暖如春已日,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背栅屏。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工飘千, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栈雳。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓护奈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哥纫。 傳聞我的和親對象是個殘疾皇子霉旗,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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

  • 從OC過渡到Swift,并不是像別人說的那樣容易,利用幾個小時就可以掌握,也需要付出一番努力,在項目中得到提升...
    藍心兒的藍色之旅閱讀 3,276評論 3 1
  • Swift 簡介 查看Swift當前版本 簡介 Swift 語言由蘋果公司在 2014 年推出,用來撰寫 OS X...
    mian小爬閱讀 338評論 0 1
  • [轉(zhuǎn)]Swift構(gòu)造函數(shù)和便利構(gòu)造函數(shù) 構(gòu)造函數(shù)基礎(chǔ) 構(gòu)造函數(shù)是一種特殊的函數(shù)蛀骇,主要用來在創(chuàng)建對象時初始化對象厌秒,為...
    xSirFting閱讀 4,423評論 0 4
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,805評論 1 10
  • 面向?qū)ο?4.1構(gòu)造函數(shù)基礎(chǔ) 構(gòu)造函數(shù)是一種特殊的函數(shù),主要用來在創(chuàng)建對象時初始化對象擅憔,為對象成員變量設(shè)置初始值鸵闪,...
    散夜閱讀 507評論 0 0