Для цикла для проверки, найден ли конкретный идентификатор в массиве - PullRequest
0 голосов
/ 26 октября 2018

Мне нужно проверить идентификатор в списке массивов, идентификатор был сгенерирован ранее, и просто мне нужно сравнить с ответом, сгенерированным позже, например: take «defaultcardid» - это предыдущий сгенерированный идентификатор, поэтому мне нужно сравнить "defaultcard" с более поздним ответом.

Я получаю «список карт» в качестве ответа «Anyobject». поэтому необходимо проверить «defaultcardid» внутри массива «cardlist».

if let xlist = (cardlist.value(forKey: "data")as? NSArray)
{
    for 0 .. i in xlist
    {
        cardfinder.adding((xlist.object(at: id)as AnyObject).value(forKey: "id")as! String)
    }
}

cardfinder - это NSMUTABLEARRAY для хранения определенного идентификатора в массиве.

Мой сын ответ ниже

{
"status": "success",
"data": [
    {
        "id": "card_1D42hlLJSnYRR6BMULHyeobB",
        "object": "card",
        "address_city": null,
        "address_country": null,
        "address_line1": null,
        "address_line1_check": null,
        "address_line2": null,
        "address_state": null,
        "address_zip": null,
        "address_zip_check": null,
        "brand": "Visa",
        "country": "US",
        "customer": "cus_DV2VCweBfI1dH0",
        "cvc_check": "pass",
        "dynamic_last4": null,
        "exp_month": 12,
        "exp_year": 2019,
        "fingerprint": "FwLfSpHMDz1b3PTH",
        "funding": "debit",
        "last4": "5556",
        "metadata": {},
        "name": null,
        "tokenization_method": null
    },
    {
        "id": "card_1D441WLJSnYRR6BMNpOsFgg0",
        "object": "card",
        "address_city": null,
        "address_country": null,
        "address_line1": null,
        "address_line1_check": null,
        "address_line2": null,
        "address_state": null,
        "address_zip": null,
        "address_zip_check": null,
        "brand": "Visa",
        "country": "US",
        "customer": "cus_DV2VCweBfI1dH0",
        "cvc_check": "pass",
        "dynamic_last4": null,
        "exp_month": 12,
        "exp_year": 2019,
        "fingerprint": "dvLGAxROCikDisQx",
        "funding": "credit",
        "last4": "0093",
        "metadata": {},
        "name": null,
        "tokenization_method": null
    },
    {
        "id": "card_1D42RjLJSnYRR6BMgSELUUut",
        "object": "card",
        "address_city": null,
        "address_country": null,
        "address_line1": null,
        "address_line1_check": null,
        "address_line2": null,
        "address_state": null,
        "address_zip": null,
        "address_zip_check": null,
        "brand": "Visa",
        "country": "US",
        "customer": "cus_DV2VCweBfI1dH0",
        "cvc_check": "pass",
        "dynamic_last4": null,
        "exp_month": 12,
        "exp_year": 2019,
        "fingerprint": "NnWxCq6FamUKl226",
        "funding": "credit",
        "last4": "4242",
        "metadata": {},
        "name": null,
        "tokenization_method": null
    }
]

}

У всех объектов есть поле с именем "id". У меня уже есть идентификатор по умолчанию id = card_1D42RjLJSnYRR6BMgSELUUut, мне нужно точно определить, в каком объекте находится моя карта. поэтому мне нужен цикл for для проверки всех объектов в массиве.

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете просто вызвать contains метод для array, чтобы проверить, существует ли значение в нем.Реализация зависит от типа array, который вы проверяете.

Пример:

Предположим, "123" is the default id.

var cardList1 = ["123", "abc", "xyz"]
cardList1.contains("123") //true
cardList1.contains("456") //false

var cardList2 = [["id": "123"], ["id": "abc"], ["id": "xyz"]]
cardList2.contains {                //true
    return $0["id"] == "123"
}
cardList2.contains {                //false
    return $0["id"] == "564"
}

Позвольте мнезнать, если у вас возникнут какие-либо проблемы с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...