2015-08-16 54 views
0

我正在使用SwiftyJSON来获取列表并将其打印到TableView中。 我的问题是我无法过滤这个字典,我试图做一个for循环来删除不需要的元素(或者甚至推新元素),但我找不到一种方法来删除或推送与JSON元素SwiftyJSON提供的类型。如何过滤SwiftyJSON中的JSON字典

var FilteredTripList:JSON = TripsList 
for (key: String, Trip: JSON) in TripsList { 
    if String(stringInterpolationSegment: Trip["TripFrom"]) != SearchFilter["From"]! 
    || String(stringInterpolationSegment: Trip["TripTo"]) != SearchFilter["To"]! { 
      // I'm hoping for something like the line below 
      // FilteredTripList[key.toInt()!].remove() 
     } 
    } 
} 
+0

你的TripsList是什么类型?它是一个JSONArray?还是一个JSONObject?因为你的for循环是基于键的JSONObjects ... JSONArrays是基于索引的......所以我需要知道TripList是什么类型的? –

+0

这是来自SwiftyJSON的JSON –

+0

是的,它是一个JSON很明显,但是它是JSONArray还是JSONObject?它只能是这些类型之一? –

回答

0

我不知道SWIFTY JSON,因为我总是使用与NSJSONSerialization原生方式......所以我猜

请改变这一行

FilteredTripList[key.toInt()!].remove() 

这条线

FilteredTripList.removeValueForKey(key) 

而且写我发生了什么

+0

不,尝试过那些,不工作。我需要一些适用于SwiftyJSON的东西 –

0

尝试是这样的:

FilteredTripList.dictionaryObject?.removeValueForKey(key.toInt()!) 

它应该工作。

0

对我来说,最好的办法来筛选[JSON]在做这样的:

 self.places = self.locals.filter({ (json) -> Bool in 
      return json["monthlyPurchasesLocalCount"].intValue > 0; 
     }); 
0

与下面的代码片段尝试,如果你正在使用SwiftyJSON,

它的作品完美的我。经过很多次尝试后我得到了它。

let jsonObj = some JSON 
let jobj = jsonObj.arrayValue 
if !jobj.isEmpty { 
    let j = jobj.filter({ (json) -> Bool in 
     return json["country"].stringValue == "US"; }) 
    print ("filterdData: \(j)") 
} 

注:jobj应该.arrayValue,否则将无法正常工作。