Ios 如果数组中有相同的值,则将数组附加到数组中。敏捷的
从服务器响应中,我得到了这5个数组(其中一些是数组数组) 我想要的是将数组“Legs”()中的匹配值替换为具有匹配值的完整数组。例如,如果值腿[“Id”]与值行程[“OutboundLegId”]匹配,我想用这个值替换完整的数组“行程” 第一: 第二: 该代码显示了如何将中的数据转换为对象:Ios 如果数组中有相同的值,则将数组附加到数组中。敏捷的,ios,arrays,swift,algorithm,dictionary,Ios,Arrays,Swift,Algorithm,Dictionary,从服务器响应中,我得到了这5个数组(其中一些是数组数组) 我想要的是将数组“Legs”()中的匹配值替换为具有匹配值的完整数组。例如,如果值腿[“Id”]与值行程[“OutboundLegId”]匹配,我想用这个值替换完整的数组“行程” 第一: 第二: 该代码显示了如何将中的数据转换为对象: let agents: Array = json["Agents"].arrayValue let carriers: Array = json["Carriers"].arrayV
let agents: Array = json["Agents"].arrayValue
let carriers: Array = json["Carriers"].arrayValue
let places: Array = json["Places"].arrayValue
let legs: Array = json["Legs"].arrayValue
let ss: Array = json["Itineraries"].arrayValue
let itineraries: Array = json["Itineraries"].arrayValue.flatMap({$0["PricingOptions"].arrayValue})
我想要但不完全理解如何防止swift代码:
for legID in legs {
if legs.id.match with itineraries.id {
legs.id.apped(itineraries)
}
}下面是一个示例,说明如何开始将数据转换为结构
struct Itinerary {
struct PricingOptions {
var deepLinkURL: String?
...
init(dictionary: [String : Any]?) {
self.deepLinkURL = dictionary?["DeepLinkURL"] as? String
...
}
}
var inboundLegID: String?
var outboundLegID: String?
var pricingOptions: [PricingOptions]?
...
init(dictionary: [String : Any]) {
self.inboundLegID = dictionary["InboundLegID"] as? String
self.outboundLegID = dictionary["OutboundLegID"] as? String
if let options = dictionary["PricingOptions"] as? [[String : Any]] {
self.pricingOptions = options.map({ PricingOptions(dictionary: $0) })
}
...
}
func contains(leg: Leg) -> Bool {
return leg.id == inboundLegID || leg.id == outboundLegID
}
}
struct Leg {
// apply same idea here
...
}
可能的用途:
let allItineraries = itinerariesJSON.map({ Itinerary($0) })
let someItinerary = allItineraries.find({ $0.contains(someLeg) })
let containsLeg = someItinerary.contains(someLeg)
你能展示你尝试这样做的代码吗?“我不完全理解这个问题,因此它将有助于理解您所寻找的结果。@Frankie更新了我的答案。在您尝试这样做之前,首先将此数据转换为结构。尝试使用JSON字典将使这变得难以置信和不必要的复杂。您需要一个
struct航段
和struct行程
(可能还有航班
,代理
,承运人
,等等)。不厌其烦地将其分解为类型将大大简化您的算法。然后,您可以轻松地编写方法,如hasmatchinginventurement
,或使行程均衡,或其他任何您需要的方法。
struct Itinerary {
struct PricingOptions {
var deepLinkURL: String?
...
init(dictionary: [String : Any]?) {
self.deepLinkURL = dictionary?["DeepLinkURL"] as? String
...
}
}
var inboundLegID: String?
var outboundLegID: String?
var pricingOptions: [PricingOptions]?
...
init(dictionary: [String : Any]) {
self.inboundLegID = dictionary["InboundLegID"] as? String
self.outboundLegID = dictionary["OutboundLegID"] as? String
if let options = dictionary["PricingOptions"] as? [[String : Any]] {
self.pricingOptions = options.map({ PricingOptions(dictionary: $0) })
}
...
}
func contains(leg: Leg) -> Bool {
return leg.id == inboundLegID || leg.id == outboundLegID
}
}
struct Leg {
// apply same idea here
...
}
let allItineraries = itinerariesJSON.map({ Itinerary($0) })
let someItinerary = allItineraries.find({ $0.contains(someLeg) })
let containsLeg = someItinerary.contains(someLeg)