2017-03-04 14 views
0

スウィフト3.0 iOSの10.xのSwiftyJSON... SwiftyJSON配列

に、私はこのようになります辞書オブジェクトのSwiftyJSON配列を持つ

[ 
    { 
    "figure" : 1326, 
    "account" : "Charles" 
    } 
    { 
    "figure" : 2361, 
    "account" : "James" 
    } 
] 

を辞書レコードを削除する私はレコードを削除したいですそれは "James"に属していて、私はこのコードを思いついた。 jsonObjectsには、上記の配列が含まれています。

var json2S = sharedDataAccess.jsonObjects 

    for json2DX in 0..<json2S.count { 
     var delIndex: Int? = nil 
     for (jsonK, subJson) in sharedDataAccess.jsonObjects[json2DX] { 

      print("json2D \(jsonK) \(subJson.stringValue) \(Name)") 
      if jsonK == "account" && subJson.stringValue != Name { 
       delIndex = json2DX 
       print("DELETE IT \(jsonK) \(subJson.stringValue) \(Name)") 
      } 
     } 
     if delIndex != nil { 
      json2S[0].arrayObject?.remove(at: delIndex!) 
      print("DELETING IT \(delIndex) \(Name)") 
     } 
    } 

    sharedDataAccess.jsonObjects = JSON(json2S) 

これは機能しますが、私が望んだ方法ではありません。それはJamesを削除します(名前変数にはJamesが含まれていると仮定しますが)。

[ 
    null, 
    { 
    "figure" : 1326, 
    "account" : "Charles" 
    } 
] 

ジェームズはnullに置き換えられます...私は嫌いですが、どのように私はエントリを削除することはできますか?nullを取得するか、実際にはnullを削除することもできます!

+3

基本的にSwiftJSONをコレクションタイプとして誤用しないでください。 SwiftyJSONはJSONのように 'nil'値を' NSNull'として扱います。 JSONを標準コレクション型 'Array'と' Dictionary'にパースし、それらを変更します。 – vadian

+0

公正なポイント;私はこれをコード化します。 – user3069232

答えて

0

ここで私の答えです。それを良い指標のために投稿した。まったく同じ論理ではないが、ヴァディアンの指摘に従った。

var json2S = sharedDataAccess.jsonObjects 

    var jsonA:[[String:Any]] = [] 
    for json2P in sharedDataAccess.jsonObjects { 
     print("json2P \(json2P)") 
     var jsonDict:[String:Any] = [:] 
     var json2Save = false 
     for (jsonK, subJson) in json2P { 
      print("jsonK \(jsonK) \(subJson.stringValue) \(fnName)") 
      jsonDict[jsonK] = subJson.stringValue 
      if jsonK == "account" && subJson.stringValue == fnName { 
       json2Save = true 
      } 
     } 
     if json2Save { 
      jsonA.append(jsonDict) 
     } 
    } 

    let sharedDataAccess.jsonObjects = JSON(jsonA) 
関連する問題