Objective-C では、このように json 応答でオブジェクト マッピングを使用できます。
PolicyData *policyData = [[PolicyData alloc] initWithDictionary:responseObject error:&err];
ここで、responseObject を PolicyData クラス プロパティにマップできます。Swiftで同じことを行うにはどうすればよいですか?
Objective-C では、このように json 応答でオブジェクト マッピングを使用できます。
PolicyData *policyData = [[PolicyData alloc] initWithDictionary:responseObject error:&err];
ここで、responseObject を PolicyData クラス プロパティにマップできます。Swiftで同じことを行うにはどうすればよいですか?
ブリッジング ヘッダーを追加するのと同じくらい簡単なはずです ( PolicyData
Objective-C で記述されている可能性が高いため)。これを行う方法については、この Apple ドキュメントを参照してください。
PolicyData
次に、そのオブジェクトを次のように簡単に作成できます。
do {
let newPolicyDataObject = try PolicyData(responseObject)
} catch error as NSError {
print("error from PolicyData object - \(error.localizedDescription)")
}
responseObject
これは、あなたが NSDictionary であることを前提としています。また、Swift 2 は便利な (?) エラー パラメータを try/catch ブロックに変換します。
つまり、PolicyData の
- (instancetype) initWithDictionary:(NSDictionary *)responseObject error:(NSError *)err;
宣言は魔法のようになります
func initWithDictionary(responseObject : NSDictionary) throws
この Apple Objective-C/Swift 相互運用性ドキュメントの「エラー処理」セクションで説明されているとおりです。
を追加できます
convenience init?(dictionary: NSDictionary)
ディクショナリから初期化し、そこでそのプロパティを初期化したい任意のオブジェクトに。
ただし、swift は (遅かれ早かれ) 動的なディスパッチを行わないため、プロパティの名前が任意のオブジェクトのディクショナリのキーであると期待するように一般化することはできません。