2016-07-24 3 views
0

スウィフトと財団関係

私が理解できないのは、Foundationクラスを使用する必要がある場合、または純粋なSwiftに留まる必要がある場合です。

たとえば、私はSwift文字列を持っているとき、私はいつも純粋なSwift文字列で見つけることができない機能のNSStringから継承する必要がありますか?

昨日私は2つのSwift文字列の大文字と小文字を区別しない比較を探していました。私が見つけた解決策の1つは、次のとおりでした:

これは私に多くの不満をもたらします。スイフト文字列は、純粋なSwiftには存在しない関数(caseInsensitiveCompare)をどのように持つことができますか?

文字列はどこかから継承していましたか?

スウィフトのスーパーセットとしてファンデーションが必要な場合は、私に全体的な説明をしてください。 Objective-C for Swiftをスキップする開発者として、私がもう必要としていない基盤はどれですか?

答えて

1

if a.lowercaseString == b.lowercaseString { 
    //Strings match 
} 

私は実際にStringの延長にそれをロールバックします:あなたのケースでは

は、あなたが小文字に両方の文字列を変換し、それらを比較することによって、大文字と小文字を区別しない比較を行うことができます

スウィフト文字列はどのようにして にpure Swiftに存在しない関数(caseInsensitiveCompare)を持つことができますか?

あなたは(財団を含むかのUIKit、)財団を輸入しているためとスウィフト文字列財団NSStringのにを架設されているからです。これにより、多くの(ただしすべてではありませんが)NSStringメソッドが文字列に影響を与えます。

あなたが持っていた場合ない財団輸入、あなたはあなたがやったことを行うことができなかったででしょう:caseInsensitiveCompareが存在しなかったでしょう。

+0

さらに詳しく説明している私の無料のオンラインブックをご覧ください。http://www.apeth.com/swiftBook/ch03.html#_string – matt

+0

これは物事をより明確にします。もう少し「ブリッジされた」定義を説明できますか? –

+0

"ブリッジされた"とは、あなたの質問の目的のために、私が答えて言ったことを正確に意味します。詳細は、私があなたに与えたリンクを読んでください。私の本はすべてこれについて説明しています。または、Swiftのドキュメントを読んでください。 – matt

1

Foundationフレームワークは、Objective Cの初期の時点から、NeXTSTEPのルーツを持っています。これは素晴らしいフレームワークですが、日付がついていて、多くの最新のプログラミング原則が欠けていて、Swiftの新しい光沢のあるおもちゃ。 AppleはSwift 3のためのFoundationの活性化に取り組んでいます。

私は、純粋なSwiftソリューションが利用可能なときはいつでも、Foundationを使用していることを明らかにするでしょう。

extension String { 
    func equalsIgnoringCase() -> Bool { 
     return a.lowercaseString == b.lowercaseString 
    } 
} 

//then: 

if a.equalsIgnoringCase(b) { 
    //Strings match 
} 
関連する問題