Как отсортировать два массива и быстро добавить общий элемент в третий - PullRequest
0 голосов
/ 27 февраля 2020

Я новичок в swift и не могу получить общий массив

"certification": [
            {
                "certification_id": "1",
                "certification_name": "ug"
            },
            {
                "certification_id": "2",
                "certification_name": "pg"
            },
            {
                "certification_id": "3",
                "certification_name": "academy"
            }
        ],
        "specialization": [
            {
                "specialisation_id": "1",
                "specialisation_name": "Fashion Design",
                "specialisation_short_name": "UG",
                "specialisation_school": "1",
                "specialisation_certification": "1"
            },
            {
                "specialisation_id": "2",
                "specialisation_name": "Interior Design",
                "specialisation_short_name": "UG",
                "specialisation_school": "1",
                "specialisation_certification": "1"
            },
            {
                "specialisation_id": "3",
                "specialisation_name": "Communication Design",
                "specialisation_short_name": "UG",
                "specialisation_school": "1",
                "specialisation_certification": "1"
            },
            {
                "specialisation_id": "4",
                "specialisation_name": "Product Design",
                "specialisation_short_name": "UG",
                "specialisation_school": "1",
                "specialisation_certification": "1"
            },
            {
                "specialisation_id": "5",
                "specialisation_name": "Strategic Design and Management",
                "specialisation_short_name": "UG",
                "specialisation_school": "1",
                "specialisation_certification": "1"
            },
            {
                "specialisation_id": "6",
                "specialisation_name": "Fashion Communication & Styling",
                "specialisation_short_name": "UG",
                "specialisation_school": "1",
                "specialisation_certification": "1"
            },
            {
                "specialisation_id": "7",
                "specialisation_name": "Design and Innovation",
                "specialisation_short_name": "PG",
                "specialisation_school": "1",
                "specialisation_certification": "2"
            }
           ]

, если я выберу "tification_id ":" 2 ", тогда я получу только данные" specialisation_certification ":" 2 "

Но мне нужны целые данные массива, такие как

"specialisation_id": "7",
"specialisation_name": "Design and Innovation",
"specialisation_short_name": "PG",
"specialisation_school": "1",
"specialisation_certification": "2"

Это также может быть множественный выбор, например ,tification_id может быть 1,2

Возможно ли, если да, то как могу ли я это сделать. Заранее спасибо!

Я попробовал этот код

var list:Array<Int> = [1,2,3,4,5]
var findList:Array<Int> = [1,3,5]

let listSet = NSSet(array: list)
let findListSet = NSSet(array: findList)

let allElemtsEqual = findListSet.isSubsetOfSet(otherSet: listSet)

Но он дает мне только значения в true или false, но мне нужны все значения

Я пытался @PGDev код его работает, но только когда он равен. Мне нужно реализовать это в текстовом поле

  func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{

        if textField == txtSearch{
            let certificationId = "800016"
            print(certificationId)

            let result = (searchdict["specialization"] as? [[String:Any]])?.filter({ ($0["specialisation_id"] as? String) == certificationId })
            print("Result = ",result as Any)


        }

    return true
}

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

используйте этот фрагмент кода для получения общих элементов между массивами буксировки на основе идентификатора.
var specializations: [Specialization]? var certifications: [Certification]? var filtered: [Certification]?

specializations?.forEach({ (specification) in filtered?.append(contentsOf: (certifications?.filter({specification.specialisation_id == $0.certification_id}))!) })

0 голосов
/ 27 февраля 2020

Если dict равно

let dict = [
    "certification": [
        ...
    ],
    "specialization": [
        ...
    ]
]

Тогда вы можете получить все specialization dict на основе certificationId, например,

let certificationId = "2"

let result = (dict["specialization"] as? [[String:Any]])?.filter({ ($0["specialisation_certification"] as? String) == certificationId })

print(result) //[["specialisation_name": "Design and Innovation", "specialisation_id": "7", "specialisation_certification": "2", "specialisation_school": "1", "specialisation_short_name": "PG"]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...