2016-10-26 6 views
0

基本的にはC++に精通していますが、私は素早い3プログラミング言語の初心者です。辞書の使い方を理解するのに助けが必要

私はSwift 3で辞書を使うことを学んでいます。私はC++のハッシュに似ていると信じています。私はそれにいくつかのキー:値のペアを持つ辞書を持っています。 私は(私は事前に知ることができません)特定の、単一のキーを取得し、その辞書から対応する値を抽出したいです。 同じ名前のキーには同じ値が関連付けられていますが、その名前のキーが1つあることはわかっています。 は、キーからその値を抽出した後:その辞書の値のペア、私は文字列として変数にその単一の値を格納したいです。

これはどのような種類のコードですか?

参考になるかもしれないコードがいくつか見つかりましたが、わかりませんし、そのコードをどのように使って(実際にそれを書いているか)私が望むようにする方法もわかりません。

extension Dictionary where Value: Equatable { 

    func someKeyFor(value: Value) -> Key? { 

     guard let index = indexOf({ $0.1 == value }) else { 
      return nil 
     } 

     return self[index].0 

    } 

} 
+0

特定のキー(辞書では非常に一般的な作業です)に値を取得するように記述しますが、コードサンプルは逆のことを試みています。だから、実際に何が目標ですか? – alexburtnik

答えて

0

これは直接的な辞書アクセスです。拡張機能を使う必要はありません。

var myDictionary = [String:String]() 

// At some point strings are put into the dictionary 
// e.g. myDictionary["SomeKey"] = "SomeString" 
// then you can say 

if let someString = myDictionary[key] { 
    // You can now do something with someString 
} 

キーとオブジェクトはもちろん

私はあなたがiBooksの中にアップルからスウィフトの本を読んで、Xcodeでスウィフト遊び場にして物事を試してみることをお勧めで、文字列である必要はありません。

+0

まあ、私の場合、問題は、someString = myDictionary [key]のエラーが表示されるようです - オプションのString型の値がアンラップされていないことを示し、 '!'を追加するよう促しますXcodeはオブジェクトを停止するが、何らかの理由でコードが機能しない。重要な部分は、実際には私があらかじめわからない変数です。変数を渡すことは可能ですか?値を保存したい未知のキーです。 – wheremyheartwilltakeme

+0

これは、そのキーの要素がディクショナリに存在しない可能性があるためです。ディクショナリアクセスは*オプション*を返します。これについては、Swift Bookおよびこちらで説明しています。http://stackoverflow.com/documentation/swift/247/optionals#t = 201610262214145417184オプションはSwiftの非常に重要な概念です。私のコードが 'let let ....'と言っているのを見てください。これはオプションです。 if内のコードは 'myDictionary [key]'の値がnilでない場合にのみ実行されます。私の例では、 'key'は文字列変数になります。その値は辞書から得たいキーです – Paulw11

関連する問題