Как проверить, что массив содержит нулевое значение и дает значение по умолчанию swift - PullRequest
1 голос
/ 14 октября 2019

У меня есть массив, который заполняется из ответа JSON от сервера API. Иногда значения для ключа в этом массиве равны Null

Я пытаюсь взять данное значение и поместить его в подробный текст ячейки таблицы для отображения.

Проблема заключается в том, что когдаЯ пытаюсь привести значение в строку, и у меня возникает сбой, который, по-моему, связан с тем, что я пытаюсь привести значение Null к строке.

Какой правильный способ сделать это? Например, мой ответ ниже типа, и я пытаюсь получить этот массив в переменной self.imageArray

response = ["abc.jpg", "null", "xyzzy.jpg"]

 self.imageArray = (self.dataArray.value(forKey: "product_image") as? [String])!

но на второй итерации происходит сбой, поскольку второе значение равно нулю.

Ответы [ 5 ]

1 голос
/ 14 октября 2019

Это решит проблему как для нуля, так и для нуля.

response = ["abc.jpg","null","xyzzy.jpg", nil]
var result = response.filter { return ($0 != "null" && $0 != nil) }

print(result) // return option result.
1 голос
/ 14 октября 2019

В вашем случае только (Решение в соответствии с заданным массивом ответов): -

response = ["abc.jpg","null","xyzzy.jpg"]

Используйте следующий код

      if !response.contains("") && !response.contains("null"){
        //  No null or empty string now
        // your code
      }else{
           print("Contain null or empty value")
       }
1 голос
/ 14 октября 2019

В этом случае вы можете использовать compatcMap.

 let response = ["abc.jpg", nil, "xyzzy.jpg"]
 let result = response.compactMap { $0 }
 print(result)

Если вы уверены, что в строковом типе значение будет "нулевым", вы можете использовать следующий способ.

let response = ["abc.jpg", "null", "xyzzy.jpg"]
let result = response.filter { $0 != "null" }
print(result)

объединенный результат

 let result = response.filter { $0 != "null" }.compactMap { $0 }
print(result)
0 голосов
/ 14 октября 2019

Если вы точно знаете, что действительное значение всегда будет содержать тип изображения, такой как .jpg, то вы можете проверить это, и оно удалит nil значения, "null" или любые другие случайные строки, включая пустые строки" ".

response = ["abc.jpg","null","xyzzy.jpg", nil, " "]
self.imageArray = response.filter { $0?.contains(".jpg") ?? false }
0 голосов
/ 14 октября 2019

Это должно быть похоже на

var image = ["abc.jpg", nil, "xyzz.jpg"]
image = image.filter { $0 != nil}
print(image)

Вы должны отфильтровать нулевые значения.

, если вы удалите определенную строку "null"

var image = ["abc.jpg", "null", "xyzz.jpg"]
image = image.filter { $0 != "null"}
print(image)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...