#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-массив, я бы использовал первый индексный компонент, это все, что нужно сейчас.