2017-04-26 15 views
1

これは簡単な質問です。私は、JSONコードから受け取ったデータを "編集"するための正しい用語が何であるかはわかりません(私自身は分かりません)。ここに私の現在のコードです:Swift 3&JSON - データベースから受け取ったデータを編集する方法は?

// Create a url and a session to load it in the background. 
let url = URL(string: "http://api.fixer.io/latest") 
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in 

    if error == nil { 

     // Try to extract some content from the data. 
     if let content = data { 
      do { 

       // Try to create an array out of the extracted data content. 
       let jsonResult = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject 

       // Search for specific objects in the array. 
       if let rates = jsonResult["rates"] as? NSDictionary { 
        print("Rates: \(rates)\n\n") 
        if let currency = rates["USD"] { 
         // Output of line below is – "Currency: \"1.0893\"" 
         print("Currency: \(currency)") 
        } 

       } 

      } catch { 
       print("Error deserializing the JSON:\n\(String(describing: error))") 
      } 
     } 

    } else { 
     print("Error creating the URLSession:\n\(String(describing: error))") 
    } 

} 

// Begin using the URLSession to extract the data. 
task.resume() 

あなたが上見ることができるように、私はJSONを使用して、URLからいくつかのデータを取得し、その後、私はratescurrencyタイトルを付けるんだデータの特定のセットを抽出しています。

しかし、データの編集方法はウェブのどこにもありません。たとえば、currencyの値を「1.0893」ではなく「$ 230」に変更するとします。それを変更して変更するために必要な用語/コードは何ですか?もう1つの例は、という別のオブジェクトをrates辞書に追加したい場合です。 などを追加したい場合はどうすればよいですか?私はこれに関する具体的な構文について知識がありません。私は助けが必要です!

EDIT - はい、後で情報が引き出されたときにデータベース自体を変更しようとしていますが、今変更した内容で更新されます。上記の例では、currencyを「230ドル」に変更できると述べました。さて、私はそれをデータベースに永久に残しておきたいので、後でその値を抽出するときには、まだ「1.0893」ではなく、変更した値になります。

この用語は「押していますか?データベース自体を変更したいと思います。

+0

URLからデータを取得する場合は、変更したデータを別のURLにポストして、データベースに更新を指示する必要があります。おそらくデータをJSONにシリアル化し、別のURLSessionを使用してポストしますが、どこに送信するか、どのようにフォーマットするかは、変更しようとしているデータベース、Web API、およびそれにアクセスするあなたのレベル。 – Robert

答えて

0

abbrev部材が一定(let)であり、例えば

struct Currency { 
    let abbrev : String 
    var value : Double 
    var myCurrency : Bool 

    var dictionaryRepresentation : [String:Any] { 
     return ["abbrev" : abbrev, "value" : value, "myCurrency" : myCurrency] 
    } 
} 

var currencies = [Currency]() 

、カスタム構造体またはクラスにJSONを解析し、他のメンバー変数です。

... 

     // Try to create an array out of the extracted data content. 
     let jsonResult = try JSONSerialization.jsonObject(with: content) as! [String:Any] 

     if let rates = jsonResult["rates"] as? [String:Double] { 
      for (abbrev, value) in rates { 
       let myCurrency = abbrev == "USD" 
       currencies.append(Currency(abbrev: abbrev, value: value, myCurrency: myCurrency)) 
      } 
     } 

このコードでは、ネイティブDictionaryが使用されています。とにかく.mutableContainersはSwiftには役に立たない。

+0

大丈夫ですので、このグローバル配列 'currencies'を作成した後、変数myCurrency'に抽出した値を追加します。どのようにしてデータベースに追加されますか?このデータをXcodeプロジェクトに取り込む方法を理解していますが、他のデータをデータベース自体に戻すにはどうしたらいいですか? –

+0

オブジェクトをサーバーに書き戻したいとは思っていませんでした。データを変更した後は、配列をJSONにマップする必要があり、Webインターフェイスを使用してデータを受け取り処理します。 – vadian

+0

はい、それはまさに私の質問でした。データをJSON形式に戻してデータベースに戻す方法がわかりません。 –

関連する問題