2017-09-26 8 views
0

私は、アレイJSONはNSObjectをエンコードしませんか?

let prices = [InventPricing]() 

として保持されNSObjectクラス

class InventPricing: NSObject { 
    var quantity: NSNumber = NSNumber(value: 00.00) 
    var cost:  NSNumber = NSNumber(value: 00.00) 
    var total:  NSNumber = NSNumber(value: 00.00) 
} 

がencoder.encodeにJSON文字列

print("Insert Inv List 1    \(prices) ") 
let encoder = JSONEncoder() 
encoder.outputFormatting = .prettyPrinted 
let info = try! encoder.encode(prices) 
print("Insert Inv List 1    \(info ) ") 
let str = String(data: info, encoding: .utf8)! 
print("Insert Inv List 1    \(str ) ") 

取得エラーとして配列をエンコードしようとしてい(価格)行

致命的なエラー:配列は対応していませんInventPricingがエンコード可能に準拠していないので:

を私は見つけることができるすべては助けてください構造体ではないNSObjectのクラス

のエンコードされたエンコード可能にするRM! 事前のおかげで

+0

をこの[解答](HTTPSを試してみてください: //stackoverflow.com/a/47531466/6822622)。 [NSObject]が文字列またはデータに変換する – AshvinGudaliya

答えて

1

プロセスは、クラスや構造体のために、実際には同じである、現在のパターンは、データモデルのための構造体を使用することですけれども...

は、あなただけのプロトコルに準拠する必要があります。

class InventPricing: NSObject, Encodable { … 

あなたは両方の方法を変換したい場合:

class InventPricing: NSObject, Codable { … 

詳細情報についてはthe documentationをチェックしてください。それはすべての例で構造体を使用しますが、それは構造体でのみ機能し、構造体またはクラスとなる用語 'type'を使用するとは決して言いません。

+0

ドキュメントが表示されたので、ありがとうございました。 'Foundation.JSONEncoder'(0x101863830)の値を 'Swift.Encoder'(0x109711298)にキャストできませんでした。 2017-09-26 15:13:10.188008-0400 EEDS4 [7129:3964368] 'Foundation.JSONEncoder'(0x101863830)型の値を 'Swift.Encoder'(0x109711298)にキャストできませんでした。 – NewDev

+0

@NewDevあなたの新しいコードはどのように見えますか? –

0

使用することをNSObjectから[String: Any]

//NSObject convert in to [String: Any] 
extension NSObject { 
    @objc func toDict() -> [String: Any] { 
     var dict: [String: Any] = [:] 

     for chiled in Mirror(reflecting: self).children { 
      dict[chiled.label!] = chiled.value 
     } 

     return dict 
    } 
} 

NSObjectのを変換するには、この拡張[文字列:任意] - yourObject.toDict()

// [String: Any] to Data 
do { 
    let jsonData = try JSONSerialization.data(withJSONObject: prices.toDict() , options: [.prettyPrinted]) 
} catch let error { 
    print("json serialization error: \(error)") 
} 

ともRefer My Another Ans.

関連する問題