2017-12-21 19 views
0

Alamofireを使用してこのjson配列をどのように投稿することができますか。私はHow can I use Swift’s Codable to encode into a dictionary?といくつかの他のを見てきましたが、私はそれを動作させるように見えることはできません。構造体をエンコードして辞書に変換する[String:Any]

私はUITableViewからいくつかの行を追加しています。これは、エンコード前にこのように見えます。

[proj.DetailViewModel(Quantity: 1, RedeemedLocationID: 6, Points: 10), 
proj.DetailViewModel(Quantity: 2, RedeemedLocationID: 6, Points: 12)] 

struct DetailViewModel: Codable { 
    var Quantity: Int! 
    var RedeemedLocationID: Int! 
    var Points: Int! 
} 
var selectedAwards = [DetailViewModel]() 
let jsonData = try JSONEncoder().encode(selectedAwards) 

// error nil 
let dict = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any] 

// error nil 
let struct1 = selectedAwards 
let dict = try struct1.asDictionary() 

私はちょうどそれをチェックするためにSwiftyJsonを使用する場合はこれが正しいこの

let json = JSON(jsonData) 
print(json) 
[ 
    { 
    "Points" : 10, 
    "Quantity" : 1, 
    "RedeemedLocationID" : 6 
    }, 
    { 
    "Points" : 12, 
    "Quantity" : 2, 
    "RedeemedLocationID" : 6 
    } 
] 

答えて

0

次のようになります。

struct DetailViewModel: Codable { 
    var Quantity: Int 
    var RedeemedLocationID: Int 
    var Points: Int 
} 




var selectedAwards = [DetailViewModel(Quantity: 1, RedeemedLocationID: 6, Points: 10), 
         DetailViewModel(Quantity: 2, RedeemedLocationID: 6, Points: 12)] 
let jsonData = try JSONEncoder().encode(selectedAwards) 

let array = try JSONSerialization.jsonObject(with: jsonData, options: []) 

次の2つの問題持っている:

var selectedAwards = [DetailViewModel]() - 間違って

selectedAwardsは配列です。 にtextFieldDidEndEditingデリゲートが起こっている selectedAwards.append(award.Points)をDetailViewModel(数量:数量は、 RedeemedLocationID:6、ポイント)ではない辞書

+0

私はそうのようなテーブルビューからの行を追加しています。それは間違っていますか? – Misha

+0

selectedAwardsは辞書ではありません。これは配列 – Vyacheslav

+0

です。私は立ち往生していますが、進める方法がわかりません。だから私は質問は、私はこのアプローチでは辞書から辞書に行くことができると思う – Misha

関連する問題