問題タブ [swift-dictionary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
460 参照

ios - Swift のディクショナリに格納されている配列にアクセスするにはどうすればよいですか?

これは、配列を使用して辞書を作成した方法です。

NSLog の結果:

私はこれを試しました:

}

これは意味をなさない nil を返します。水曜日は保存されたキーなので、配列を返すだけで十分だと思いました。

私がやろうとしていること:

基本的に、7 つのセクションからなるテーブルがあり、それぞれが 1 日を表しています。毎日、そのスロットでアクティビティを予約するためのコストを含むタイムスロットを保存しています。

numberOfRowsInSection を使用すると、Dictionary キーを使用して、tableView に表示される特定の日の行数 (タイムスロット) を取得できます。これは、NOSql で行うと考えられる最も簡単な方法でした。

辞書を parse.com の列に保存し、tableView でその辞書にアクセスします。

とにかく、キーで配列にアクセスできないように見える理由がわかりません。私は簡単に NSMutableDictionary にアクセスして使用することができましたが、学習経験としてすべてのプロジェクトで Swift を使用しています。

["fromTime":value, "toTime":value, "cost":value] などの辞書で Dictionary を使用する方がよいかどうか疑問に思っています。

与えられた助けに感謝します。

御時間ありがとうございます。

0 投票する
4 に答える
8486 参照

swift - Swift: 配列内の辞書

データ:

迅速な配列と辞書を使用して、この種の構造をどのように持つことができますか? このデータは、配列内の辞書を示していますよね? だから私は提案します:

しかし、これは私にエラーを与えます:

何か案は?

0 投票する
2 に答える
1128 参照

swift - オプションの値を扱う辞書拡張の書き方

拡張機能を実装しようとしていますが、Dictionaryオプションの値を処理したいと考えています。しかし、何をしても、[String: String?]辞書でメソッドを使用すると、オプションで値をバインドできません。オプションの値を適切に処理する辞書の拡張機能をどのように作成しますか?


次の拡張機能を検討してください。

したがって、次のコードを検討してください。

そしてそれは不思議なことに報告します

オプションの値を持つディクショナリ パラメーターを処理する非拡張メソッドを作成できますが、Dictionary.

0 投票する
0 に答える
681 参照

ios - iOS 8.1 Swift 辞書エラー: EXC_BAD_ACCESS (XCode 6.1)

TLDR: iOS8.1 用の XCode 6.1 ビルドで swift を使用すると、EXC_BAD_ACCESS エラーが発生します。問題はおそらくコンパイラ エラーであると思います。

私は、ユーザーが (英語の意味で) 辞書から (韓国語の) 単語を単語リストに追加できるアプリを作成しています。単語を定義する次のクラスがあります (関連する定義、オーディオ ファイル、ユーザー インタラクション統計などを含む) および単語リスト (関連する単語のリストと、リストに単語を追加/削除するメソッド、リストをアルファベット順に並べるメソッドを含む)など):

次に、UISearchBar を備えた UITableViewController を用意します。これを使用して、単語の辞書 (英語の意味で) をユーザーに表示します。ユーザーは、各セルの右側にあるボタン (画像が表示されているボタン) をタップして単語を追加します。これにより、viewController で@IBAction func addWord()が呼び出されます。

最初はアプリがコンパイルされ、正常に動作しているように見えます。新しい単語リストを追加して、8 番目の単語を追加するまで単語を追加できます。私は(常に8番目の単語で)次のprintln情報を含む(WordList)addWordToListでEXC_BAD_ACCESSエラーを取得します。

単語を追加する順序は関係ないように見えることに注意してください (つまり、最初の 7 単語の 1 つである場合、「大学生」という単語を正常に追加できます)。単語リスト内の単語数に基づいて動作を明示的に変更するコードのどこにもありません (単語リスト内の単語を UITableView のセルとして表示することを除く)、または (私の知る限り) 8番目の単語は特別な番号です。実際、この数値はlet hack=ソリューション (以下を参照) を使用して別の数値に変更できますが、特定のビルドでは常に同じ数値になります。

この時点で、私は何をすべきか完全に途方に暮れています。私はswiftに比較的慣れておらず、exc_bad_accessエラーを修正する方法を調べるのにかなりの時間を費やしました。私は次のポイントに来ました:

exc_bad_access エラーは通常、次の 3 つのいずれかを意味するようです ( http://www.touch-code-magazine.com/how-to-debug-exc_bad_access/ )

  1. オブジェクトが初期化されていません
  2. オブジェクトはすでに解放されています
  3. あまり起こりそうにないその他のこと

アクセスエラーが発生する直前に、問題の辞書の内容 ( knownWords )を出力できるため、1 または 2 のいずれにも当てはまらないと思います。ただし、いつものように、明らかな何かが欠けている可能性が高いので、これが本当かどうか教えてください。

エラーの原因が上記の 3 (「その他」) の場合、次のことを試しました。

( NSExpression ソリューションの評価に使用した後に Swift 辞書を更新する場合は、辞書を使用した iOS 8.1 のEXC_BAD_ACCESSおよびEXC_BAD_ACCESS から)

  1. 私はさまざまなバリエーションのlet sickHack =シナリオを試しましたが、結果が変わることもありますが、クラッシュする前に許可されたエントリの数だけです (つまり、エラーの前に辞書の ~15/16 エントリに到達することがあります)。ただし、この方法を使用して実際にバグのない解決策を見つけることはできませんでした。
  2. リリース モードとデバッグ モードの両方を使用して再構築しました。エラーは両方に表示されます。注: 私はシミュレーターのみを使用しており、実際のデバイスで試すための開発者のライセンスは持っていません。
  3. コンパイラの最適化をオフ (「なし」に設定) にしました (デバッグ ビルドでは既にオフになっていました)。
  4. 同じエラー結果で iOS 8.0 にビルドしようとしました。

この問題を回避する任意の方法を歓迎します。let hack =ソリューションは受け入れられますが、できれば、異なるビルド条件で将来エラーが発生しないことを少なくとも保証するソリューションが望ましいです。

ありがとう!

0 投票する
1 に答える
4190 参照

json - NSJSONSwift 辞書へのシリアル化

辞書にシリアル化する必要があるjsonオブジェクトがあります。NSDictionary にシリアル化できることはわかっていますが、

「Swift 1.2 では、ネイティブの Swift と同等のもの (NSString、NSArray、NSDictionary など) を持つ Objective-C クラスは、自動的にブリッジされなくなりました。」

参照: [ http://www.raywenderlich.com/95181/whats-new-in-swift-1-2]

厄介なブリッジングを避けるために、ネイティブの迅速な辞書に入れています。

NSJSONSerialization メソッドは NSDictionay にのみマップされるため、使用できません。JSON を迅速な辞書にシリアル化する別の方法は何ですか?

0 投票する
2 に答える
3386 参照

ios - ブロックをパラメーターとして受け取る目的の C 関数に迅速なクロージャーを渡す

私は次のようにObjective-Cに関数を持っています

次のように、迅速なコールバック クロージャーをこれに渡したいと思います。

ここで、replyHandler はタイプのクロージャです

エラーが表示されます:

replyHandler は WatchConnectivity デリゲートから来ています

したがって、replyHandler のタイプを変更することはできません。

パラメータを使用して迅速な閉鎖を渡すにはどうすればよいですか

パラメーターを持つブロックを取る目的の C 関数に

あなたの助けは大歓迎です!