Поиск того, что массив пользовательской модели является подмножеством другого двумерного массива той же модели в swift

#arrays #swift #algorithm #multidimensional-array #set

#массивы #swift #алгоритм #многомерный массив #установить

Вопрос:

Привет, я новичок в stack overflow, мне нужна помощь в решении проблемы, с которой я сталкивался в течение последних двух дней. итак, ниже приведены мои данные json, которые я получаю из API

 let json = """
{
    "exclusions": [
  [
    {
      "facility_id": "1",
      "options_id": "4"
    },
    {
      "facility_id": "2",
      "options_id": "6"
    }
  ],
  [
    {
      "facility_id": "1",
      "options_id": "3"
    },
    {
      "facility_id": "3",
      "options_id": "12"
    }
  ],
  [
    {
      "facility_id": "2",
      "options_id": "7"
    },
    {
      "facility_id": "3",
      "options_id": "12"
    }
  ]
]
}
"""
  

И я анализирую json с декодируемым, как показано ниже

 required init(from decoder: Decoder) throws//Unwanted Parsing code is removed.
 {
let exclusions = try container.decode([[Exclusion]].self, forKey: .exclusions)
self.exclusions.append(exclusions)
}
  

Поскольку я использую Relam для сохранения, мой класс модели выглядит следующим образом

 class Data: Object {
    dynamic var exclusions: List<DoubleExclusions> = List()
}

class DoubleExclusions: Object {
    dynamic var exclusionSet = List<Exclusion>()
    convenience init(_ exc: List<Exclusion>)
    {
    self.init()
    self.exclusionSet = exc
    }
}

class Exclusion: Object {
  dynamic var fId: String? = ""
  dynamic var oId: String? = ""
   convenience init(_ fid: String, _ oid: String) {
    self.init()
    self.fId = fid
    self.oId = oid
    }
    //parsingCodeRemoved
}
  

Как только данные будут извлечены, они будут сохранены в БД.

Я создаю пользовательский массив «Исключение» из моего ввода tableview, чтобы сравнить и проверить эти данные с существующим списком исключений базы данных. например:

Я получаю [Исключение (0,1), Исключение (2,1), исключение (1,2)] Я хочу проверить вышеуказанные элементы массивов, присутствуют ли они в одном списке объектов исключений «DoubleExclusions», где «DoubleExclusions» также сохраняется в виде списка в моем классе «Data».

просто проверьте [Исключение (0,1), Исключение (2,1), исключение (1,2)] в [[Исключение (0,1), Исключение (2,1)], [Исключение (3,4), исключение (4,2)],[Исключение (0,1), исключение (3,2)]]

пример 1:

ввод: [Исключение (0,1), Исключение (2,1), Исключение (1,2)] вывод: [[Исключение (0,1), исключение (2,1)]]

пример 2: ввод: [Исключение (0,1), Исключение (2,1), Исключение (3,2)] вывод: [[Исключение (0,1), Исключение (2,1)], [Исключение (0,1), исключение (3,2)]]

Я пытался реализовать модели с помощью операций equatable, hashable и used «Set», но пока безуспешно. пожалуйста, помогите мне с тем, как это сделать, масштабируемый подход был бы намного лучше. Спасибо

Комментарии:

1. Не связано с вашим вопросом, но вы должны назвать свой класс как-то иначе Data , это уже собственный тип swift.

2. Почему (3,2) не является частью вывода во втором примере, он существует в двойном списке вместе с (0,1)?

3. Кажется, вы спрашиваете об алгоритме, но весь ваш код связан с декодированием или определением классов. Есть ли у вас какой-либо код, связанный с алгоритмом? Если вы опубликуете это, то, возможно, кто-то сможет увидеть, где вы сбиваетесь с пути.

4. @LeoDabus Я отредактировал это здесь, в проекте оно названо иначе

5. @JoakimDanielson должно быть, но для приложения достаточно 1 набора исключений, чтобы показать ограничение, даже если оно возвращает 2d-массив, я бы использовал первый индексный компонент, это все, что нужно сейчас.