1

Objective-C では、このように json 応答でオブジェクト マッピングを使用できます。

 PolicyData *policyData = [[PolicyData alloc] initWithDictionary:responseObject error:&err];

ここで、responseObject を PolicyData クラス プロパティにマップできます。Swiftで同じことを行うにはどうすればよいですか?

4

2 に答える 2

2

ブリッジング ヘッダーを追加するのと同じくらい簡単なはずです ( PolicyDataObjective-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 相互運用性ドキュメントの「エラー処理」セクションで説明されているとおりです。

于 2016-02-28T11:08:36.913 に答える
2

を追加できます

convenience init?(dictionary: NSDictionary)

ディクショナリから初期化し、そこでそのプロパティを初期化したい任意のオブジェクトに。

ただし、swift は (遅かれ早かれ) 動的なディスパッチを行わないため、プロパティの名前が任意のオブジェクトのディクショナリのキーであると期待するように一般化することはできません。

于 2016-02-28T11:12:49.220 に答える