[解決済み] Swift - どの型を使うべき?NSStringかStringか?
質問
Swiftの導入に伴い、私は新しい言語について理解しようとしてきました。
私はiOSの開発者で、次のような型を使用します。
NSString, NSInteger, NSDictionary
のような型をアプリケーションで使用します。Apple の電子書籍 "The Swift Programming Language" では、Swift 型を使用していることに気がつきました。
String, Int, Dictionary
Swiftの型はFoundationの型が持っている機能のいくつかを持っていない(または違う名前になっている)ことに気づきました。例えば
NSString
には
length
というプロパティがあります。しかし、Swift の
String
.
iOS アプリケーションの場合、やはり Foundation タイプを使用するべきでしょうか。
どのように解決するのですか?
可能な限り、Swiftのネイティブ型を使用する必要があります。言語はそれらを使用するように最適化されており、機能のほとんどは、ネイティブ型と
Foundation
型の間で橋渡しされています。
一方
String
と
NSString
はほとんど互換性があります。
String
を受け取るメソッドに変数を渡すことができます。
NSString
パラメータを取るメソッドに、またはその逆に、いくつかのメソッドは、現時点では自動的にブリッジされないようです。参照
この回答
を参照してください。
この回答
を使用する方法についての議論は
containsString()
を使用して部分文字列をチェックすることについての議論です。(免責事項: 私はこれらの答えの両方の著者です)
私は他のデータ型を完全に調査したわけではありませんが、上で述べられたことのあるバージョンは、次のものにも当てはまると思います。
Array
/
NSArray
,
Dictionary
/
NSDictionary
と、Swiftの様々な数値型と
NSNumber
Foundation 型のいずれかを使用する必要がある場合はいつでも、変数/定数を明示的に型付けするために
var str: NSString = "An NSString"
のように明示的に変数や定数をタイプするために使用するか、あるいは
bridgeToObjectiveC()
のように、Swift型の既存の変数/定数に対して使用します。
str.bridgeToObjectiveC().length
のようにします。をキャストすることもできます。
String
を
NSString
を使用することで
str as NSString
.
しかし、これらのテクニックが明示的にFoundationの型、または少なくともその一部を使用する必要性は、将来的には陳腐化する可能性があります。
String
/
NSString
ブリッジなど、完全にシームレスであるべきです。
このテーマに関する徹底的な議論については、以下を参照してください。 CocoaとObjective-CでSwiftを使用する。Cocoaデータ型での作業
関連
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
クラッシュエラー libc++abi.dylib: NSException 型のキャッチできない例外で終了_allanGold のブログ - ProgrammerITS401
-
iOS classic error Undefined symbols for architecture XXX:
-
[解決済み] Swiftで文字列が別の文字列を含んでいるかどうかを確認するには?
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] 文字列の長さを取得する
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] iOS Simulatorでネットワークを無効にすることは可能ですか?
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?