それは本当にあなたが使用しようとしてアプリケーションのアーキテクチャとデータ構造に依存します:photographerName
が値を持っているかどうかを確認するためにあなたのコード内の
struct Photo {
let photographerName: String?
init(photographerName: String? = nil) {
self.photographerName = photographerName
}
}
そして、このような
何かアプリケーションで
アプリケーションアーキテクチャでオプションの連鎖をどのように適切に使用するかを記述する規則はありません。
最初に、われわれはoptional chainingを知っているはずです。
オプションの連鎖は、照会し、現在はゼロであるかもしれないオプションのプロパティ、メソッド 、および添字を呼び出すためのプロセスです。 オプションに値が含まれている場合は、プロパティ、メソッド、または添字の呼び出し が成功します。オプションがnilの場合、プロパティ、メソッド、またはサブスクリプト 呼び出しはnilを返します。チェーン内のリンクがnilであれば、複数のクエリを一緒にチェーンすることができ、 チェーン全体がうまく機能しなくなります。
私の経験に基づいて、私のモデルが何らかの関係や財産を持つことができるかどうかを明確に定義できなかった場合、私はデータ構造にオプションの値を使用しています。
例:
struct User {
let name: String
let email: String
var friends: [String]?
init(name: String, email: String) {
self.name = name
self.email = email
}
}
let user = User(name: "Oleg", email: "[email protected]")
私は、ユーザーが名前とメールアドレスを持っていますが、彼はすべての友人を持っているかどうかはわからないということを知っています。また、このようにして、私のコードがnil
オブジェクトの操作の実行を妨げる可能性があります。
あなたが記述する場合は、実際にはアプリケーションと要件のアーキテクチャに依存します。たとえば、photographerName
が空であるかどうかを示すプレースホルダを表示する必要がありますか? photographerName
プロパティを使用している追加操作はありますか?
nilをデフォルトの 'init(photographerName:String?= nil)'として使用する場合は、initが1つだけ必要です。 – vikingosegundo