#ios #arrays #swift #for-loop
#iOS #массивы #swift #for-цикл
Вопрос:
У меня есть такой код…
for element in self.arr_Offline {
self.arr_OfflineTemp.add(element)
break
}
self.arr_Offline.removeObject(at: 0)
Здесь я перебираю вызываемый массив self.arr_Offline
, добавляю первый элемент из этого массива в другой вызываемый массив self.arr_OfflineTemp
и немедленно выполняю break, чтобы во втором массиве был только один элемент, а затем, как только я выхожу из цикла for, я удаляю добавленный объект из основного массива, выполнив self.arr_Offline.removeObject(at: 0)
Но я хочу добавить последний элемент self.arr_OfflineTemp
вместо первого, а затем удалить этот последний элемент из self.arr_Offline
. Это должно выглядеть примерно так…
for element in self.arr_Offline { // looping through array
self.arr_OfflineTemp.add(lastElementOf'self.arr_Offline') //add last element
break
}
self.arr_Offline.removeObject(at: 'last') //remove that last element that was added to `arr_OfflineTemp`
Как я могу этого добиться ..?
Ответ №1:
Прежде всего, никогда не используйте NS(Mutable)Array
and NS(Mutable)Dictionary
в Swift.
Собственный Swift Array имеет удобный способ сделать это без цикла
Первый элемент:
if !arr_Offline.isEmpty { // the check is necessary to avoid a crash
let removedElement = self.arr_Offline.removeFirst()
self.arr_OfflineTemp.append(removedElement)
}
Последний элемент:
if !arr_Offline.isEmpty {
let removedElement = self.arr_Offline.removeLast()
self.arr_OfflineTemp.append(removedElement)
}
И, пожалуйста, отбросьте ненужные имена snake_case в пользу camelCase
Ответ №2:
Вы пробовали тот же подход с reversed() Swift:
for i in arr.reversed():
// your code logic
После добавления элемента вы можете удалить последний элемент из списка, используя это:
lst.popLast() or lst.removeLast()
Попробуйте это для приведенного выше кода:
for element in self.arr_Offline.reversed() {
self.arr_OfflineTemp.add(element)
break
}
self.arr_Offline.popLast()
Это то, что вы ищете?
Комментарии:
1. хорошо @Priyanshu Tiwari. то есть вы имеете в виду, что я могу сделать
for element in self.arr_Offline.reversed { .. }
.. но как мне это сделатьlst.pop() or del lst[-1]
..?..2. в swift нет метода с именем pop
3. используйте popLast() или removeLast()
4. для элемента в self.arr_Offline.reversed() { self.arr_OfflineTemp.add(element) break } self.arr_Offline.popLast()