1. ホーム
  2. swift

[解決済み] オプションの文字列拡張子を追加するには?

2023-06-11 01:40:15

質問

Stringの拡張子は、以下のように作成できます。

extension String {
   func someFunc() -> Bool { return true }
}

というのがありますが、これを任意の文字列に適用したい場合はどうすればいいのでしょうか?

var optionalString: String? = ""
optionalString!.someFunc() /* String? does not have a member someFunc */

を追加しようとすると extension String? { を追加しようとすると、エラーが発生します。

制約付き拡張は、'where' 節で指定された制約を持つ、特殊化されていない汎用型 'Optional' で宣言する必要があります。

どのように解決するのですか?

Swift 3.1では、オプションの値にも拡張を追加することができます。

extension Optional where Wrapped == String {
  var isBlank: Bool {
    return self?.isBlank ?? true
  }
}