Intereting Posts
Подключите IBOutlet к универсальной раскадровке Xcode6 Плагин 'org.apache.cordova.barcodeScanner' не найден для плагина сканера ios Barcode в Кордове 2.0 Рамка iOS на устройстве не включена Xcode AMSlideMenu Открытие левого меню только с помощью кнопки, отключение салфетки Я отправляю словарь в json, и у него есть два массива и несколько значений, но я получаю отказ в доступе к ответам Установите UIButton на размер UICollectionViewCell PCLStorage и двоичные данные Форматируйте двойное сообщение с удаленным push-уведомлением перед его представлением Как я могу получить данные из этого JSON-словаря? Нарушения вызова Coroutine JSONModel: заполнение NSArray общего типа Различные вставки в виде таблицы для заголовка заголовка таблицы и заголовков разделов Массив продолжает возвращать нуль даже при сохранении значений Swift Firebase Не удается получить код SMTP для компиляции Цель C: проблемы с сериализацией / архивированием

удалять изображения из массива изображений swift

У меня есть изображение var images: NSArray! = [] var images: NSArray! = [] Максимальное количество изображений в моем массиве – 5 изображений. Я хочу иметь возможность работать с любым количеством изображений, поэтому я извлек их

 guard let imageOne = images[0] as? UIImage else { return } guard let imageTwo = images[1] as? UIImage else { return } guard let imageThree = images[2] as? UIImage else { return } guard let imageFour = images[3] as? UIImage else { return } guard let imageFive = images[4] as? UIImage else { return } 

Я хочу, чтобы каждый индекс был необязательным, поэтому я могу использовать imageOne или imageOne и imageTwo, но когда я пытаюсь использовать менее 5 изображений, я получаю индексную ошибку. Как сделать каждый индекс необязательным, чтобы он больше не группировался с массивом, и каждый индекс стал его собственным изображением.

Первоначально у меня есть массив, потому что у меня есть пользовательский UIImagePicker, который принимает только массивы, но я хочу загрузить изображения в Firebase, а Firebase не принимает массивы, поэтому мне нужно извлечь изображения из массива.

Используя предложенный ниже ответ, я сделал это с моим кодом:

  for (counter, img) in images.enumerated(){ if counter == 0 { func uploadImage(image: UIImage){ var randomName = randomStringWithLength(length: 5) let imageData = UIImageJPEGRepresentation(imageOne!, 1.0) let uploadRef = FIRStorage.storage().reference().child("images/\(randomName).jpg") uploadRef.put(img as! UIImage, metadata: nil) { metadata, error in if error == nil { print("successfully uploaded Image") self.imageFileName = "\(randomName as String).jpg" randomName = randomStringWithLength(length: 5) let postObject: Dictionary<String, Any> = [ "image" : self.imageFileName, ] FIRDatabase.database().reference().child("posts").child(self.loggedInUser!.uid).child(key).setValue(postObject) print("Posted to Firebase. ") } else{ print("Error uploading image") }} } if let pickedImage = img as? UIImage{ uploadImage(image: pickedImage) } } } 

Теперь, как я могу проверить, сколько изображений выбрано и вызвать функцию внутри каждого, if counter == num

 for img in imgs { //do something for each img } 

Не копируйте отдельные элементы массива в переменные. Итерируя по списку, вы будете делать что-то с каждым изображением в списке, не получая никаких ошибок индекса. Если вам нужно обрабатывать каждый образ по-разному, вы можете использовать условное разветвление с помощью счетчика.

 let counter = 0 for img in imgs { if counter == 0 { // do something for first img } if counter == 1 { // do something for second img } //... if counter == 4 { // do something for fifth img } counter += 1 } 

Хотя я не согласен с тем, как вы это делаете, это ответит на ваш вопрос:

Первое изменение var images: NSArray! = [] var images: NSArray! = [] для var images: NSMutableArray! = [] var images: NSMutableArray! = []

 while images.count < 5{ images.addObject(UIImage()) } guard let imageOne = images[0] as? UIImage else { return } guard let imageTwo = images[1] as? UIImage else { return } guard let imageThree = images[2] as? UIImage else { return } guard let imageFour = images[3] as? UIImage else { return } guard let imageFive = images[4] as? UIImage else { return }