2016-07-21 265 views
0

我要創建一個新類,並且在這個類中有一個計算變量;所以我在尋找一種方法來初始化這個變量:初始化一個計算變量

import UIKit 

class Squadra: NSCoder, NSCoding 
{ 
    var nomeSquadra: String 
    var numeroCoriSquadra: Int 
    var coloreSquadra: String 
    var immagineSquadra: String 

    var sottotitoloSquadra: String 
    { 
     get 
     { 
      return "I migliori cori: \(nomeSquadra)" 
     } 
    } 

    init(nome: String, numero: Int, colore: String, immagine: String, sottotitolo: String) 
    { 
     nomeSquadra = nome 
     coloreSquadra = colore 
     numeroCoriSquadra = numero 
     immagineSquadra = immagine 
     sottotitoloSquadra = sottotitolo 
    } 
} 

顯然與這行代碼的Xcode給我的編譯錯誤(因爲var是一個只得到屬性)。 我認爲我必須使用一組來使var可寫,但我不知道如何操作,因爲我不知道如何獲取和設置工作。

回答

0

要麼刪除sottotitoloSquadra = sottotitolo要麼分配給不同的變量。即使分配工作,你也從來沒有實際使用任何東西的值作爲sottotitolo

0

我看不到有用的行爲,而您使用獨立屬性nomeSquadra並試圖讓sottotitoloSquadra在同一時間setter。也許最好在你的情況下使用隱藏的支持屬性的計算變量?

private var _sottotitoloSquadra: String 
var sottotitoloSquadra: String 
{ 
    get 
    { 
     return "I migliori cori: \(_sottotitoloSquadra)" 
    } 
    set 
    { 
     _sottotitoloSquadra = newValue 
    } 
} 

init(nome: String, numero: Int, colore: String, immagine: String, sottotitolo: String) 
{ 
    //... 
    _sottotitoloSquadra = sottotitolo 
} 
+0

這很接近,但記住sotto計算變量只能讀取,所以最好刪除set部分。 init部分很好。 –

0

如果我理解你正確地類,要使用該變量的默認字符串時在init()沒有提供一個值(我只是猜測,雖然)。

因此,如果團隊沒有特定的子標題,那麼您應該從團隊名稱中提取一個子標題。

我也明白,你不希望該屬性在對象實例化後可以修改。

如果是這樣的話(我假設你會得到一個sottotitolo的空字符串),你可以定義一個私有變量來保存提供的標題並使用計算變量公開它。如果在init()上沒有提供標題,那麼可以通過該計算變量返回默認值(由標題組成)。

class Squadra 
{ 
    var nomeSquadra: String 
    var numeroCoriSquadra: Int 
    var coloreSquadra: String 
    var immagineSquadra: String 

    private var _sottotitoloSquadra = "" 
    var sottotitoloSquadra: String 
    { 
     return _sottotitoloSquadra == "" 
      ? "I migliori cori: \(nomeSquadra)" 
      : _sottotitoloSquadra 
    } 

    init(nome: String, numero: Int, colore: String, immagine: String, sottotitolo: String) 
    { 
     nomeSquadra = nome 
     coloreSquadra = colore 
     numeroCoriSquadra = numero 
     immagineSquadra = immagine 
     _sottotitoloSquadra = sottotitolo 
    } 
} 

只有你的類,包括它的init()函數,可以修改保存提供的sottotitolo的私有變量。在源文件之外,私有變量根本不可訪問。