Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果数组中有相同的值,则将数组附加到数组中。敏捷的_Ios_Arrays_Swift_Algorithm_Dictionary - Fatal编程技术网

Ios 如果数组中有相同的值,则将数组附加到数组中。敏捷的

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

从服务器响应中,我得到了这5个数组(其中一些是数组数组)

我想要的是将数组“Legs”()中的匹配值替换为具有匹配值的完整数组。例如,如果值腿[“Id”]与值行程[“OutboundLegId”]匹配,我想用这个值替换完整的数组“行程”

第一:

第二:

该代码显示了如何将中的数据转换为对象:

      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)