2016-04-28 8 views
0

私はのは、私は以下のクラスを持っているとしましょう、optionalsまわりで私の頭を取得しようとしている:あなたはContactクラスは、フィールドのdisplayNameを持って見ることができるようにnilプロパティを持つオブジェクトを作成してテストするにはどうすればいいですか?

class Contact { 

    var displayName:String 

    init(displayName:String) { 
     self.displayName = displayName 
    } 

} 

class Contacts { 
    func create(displayName:String) -> Contact { 

     return Contact(displayName: displayName) 
    } 
} 

を、この値は初期化時にはnilすることができます。

let contact = Contact(displayName: "Test Name") 

ではなく、私もこれを行うことができるようにしたい:

ので、私は希望このクラスを初期化するために、通常は行う

let contact = Contact() 

または

let contact = Contacts().create() 
+0

Contactsクラスで同じ作品

class Contact { var displayName: String? init(displayName: String? = nil) { self.displayName = displayName } } let contact1 = Contact() let contact2 = Contact(displayName: "John") 

あなたが持っている問題を理解する。正確な問題と期待される結果を詳述してください。 –

+0

私は自分の質問を修正して少しうまく自分自身を説明してください – ospfranco

+0

'displayName'プロパティはオプションではありません(編集後)ので、' let contact = Contact() 'は何を期待していますか? –

答えて

3

あなたはデフォルト 値nilで、初期化パラメータオプションString?行うことができます:私はしません

class Contacts { 
    func create(displayName: String? = nil) -> Contact { 
     return Contact(displayName: displayName) 
    } 
} 

let contacts = Contacts() 
let contact3 = contacts.create() 
let contact4 = contacts.create("Mary") 
+0

私が探していたもの、感謝! – ospfranco

+0

はいこれはもっと正しい答えです。 – Mark

0

メイドdisplayNameプロパティは次のようにオプションです:

var displayName:String?

オプションは、nilまたは実際の値を保持することもできます。これは、これににあなたを可能に

class Contact { 
    var displayName: String? 

    convenience init(displayName: String) { 
     self.init() 
     self.displayName = displayName 
    } 
} 

:あなたはdisplayNameオプションを使用する場合は

1
はこれにあなたのクラスを変更し

let contact = Contact() 
let otherContact = Contact(displayName: "Test Name") 

EDIT: はここでも作成する機能です。

class Contacts { 
    func create() -> Contact { 
     return Contact() 
    } 

    func create(displayName: String) -> Contact { 
     return Contact(displayName: displayName) 
    } 
} 

私はこれをお勧めします:

class Contact { 
    var displayName: String? 

    init(displayName: String?) { 
     self.displayName = displayName 
    } 
} 

class Contacts { 
    func create(displayName: String?) -> Contact { 
     return Contact(displayName: displayName) 
    } 
} 
+0

ok、これは問題の一部を解決します。オプションのparamsで関数を使用し、このオプションをContactクラスに送信する方法について教えてください。 func create(displayName:String) - >お問い合わせ{ 返信連絡先(displayName:displayName) } – ospfranco

+0

回答を更新します。 – Mark

関連する問題