Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。60件0swift初心者です。EncodableなどのEncodableの型を持つ変数をJSONEncoderでエンコードしたいです。encoder.encode(MyThing())とするとEncodableの変数もエンコードできることがわかりました。このコードだとEncodableをAnyEncodable1つにつき1個しか保存できません。encoder.encode(MyThing())というようにSingleValueEncodingContainerをKeyedEncodingContainerに入れ替えました。入れ替えると先程までは出ていなかったエラーが出ました。EncodableとKeyedEncodingContainerにはキーが必要だということ以外は変わりません。KeyedEncodingContainerではエラーが出るのでしょうか。ちなみにUnkeyedEncodingContainerに入れ替えるとエラーは出ませんでした。このようになるか理由を教えていただけると幸いです。swift4、xcode9.2です。票0メソッドヘッダの宣言が少し間違えています。throwsが抜けてまずがそれは置いといて。)まずは、KeyedEncodingContainer.encode(_:forKey:)の宣言をよくご覧ください。EncodableforKeyパラメータの型は任意のCodingKey型ではなく、KeyedEncodingContainer.Key型、つまりそのコンテナのKey型でないといけません。その定義はこうなっています。Kとなっており、要はKeyedEncodingContainerのジェネリック型パラメータKと同じ型を表しています。あなたのメソッド宣言を見るとこうなっています。CodingKey)この宣言ですと、パラメータkeyは、containerの型に関係なく、CodingKeyに適合する型ならなんでも良いことになります。これでは先のKeyedEncodingContainer.encode(_:forKey:)メソッドを呼ぶことはできません。以下のようにkeyの型を書き換えてみてください。}}これで、keyはencode(_:forKey:)の宣言にある制約を満たすことになるので、その部分でのエラーは出なくなるはずです。個の銅バッジ丁寧なご指摘をありがとうございます。keyの型をKに書き換えたところ、KeyedEncodingContainerでもエンコードすることができました。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。)をコードに入れたところ、コンパイルエラーが出てしまいました。Objective-CをSwiftから使う際にマイグレーションのコードでコンパイルエラー1storyboardの遷移でエラーが出ます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。