Swift: 모든 어레이 요소를 삭제합니다.
다음과 같이 for 루프가 있는 어레이 요소를 모두 삭제하려고 합니다.
for index 1...myArray.count {
myArray.removeAtIndex(index)
}
그러나 동작하지 않습니다.빌드하기 전에 다음 오류가 발생합니다.
'for' 문에 ';'가 필요합니다.
메서드가 있다(실제 함수)
myArray.removeAll()
@vadian의 답변이 해결책인 것은 당연하지만, 당신의 코드가 작동하지 않는다는 것을 지적하고 싶습니다.
우선 어레이 인덱스는 0 베이스이므로 범위를 적절히 고쳐야 합니다.
for index 0..<myArray.count {
myArray.removeAtIndex(index)
}
다만, 이 실장에서는 크래시가 발생합니다.10개의 요소가 배열되어 있는 경우 마지막 요소는 인덱스 9의 위치를 차지합니다.
이 루프를 사용하면 첫 번째 반복에서 인덱스 0의 요소가 제거되고 마지막 요소가 인덱스 8로 시프트 다운됩니다.
다음 반복에서는 인덱스 1의 요소가 제거되고 마지막 요소는 인덱스 7에서 아래로 이동한다.기타 등등.
루프의 어느 시점에서 존재하지 않는 인덱스의 요소를 삭제하려고 하면 앱이 크래시됩니다.
루프 내의 배열에서 요소를 제거할 때 가장 좋은 방법은 요소를 역순으로 통과하는 것입니다.
for index in reverse(0..<myArray.count) {
myArray.removeAtIndex(index)
}
이렇게 하면 제거된 요소가 처리 중인 요소의 순서나 인덱스를 변경하지 않습니다.
어레이를 정말로 클리어 하는 경우는, 재초기화하는 것이 가장 간단한 방법입니다.
놓치셨네요in
에러의 원인이 되고 있는 키워드.코드는 다음과 같습니다.
for index in 1...myArray.count {
myArray.removeAtIndex(index)
}
단, 몇 가지 이유로 이 방법은 정상적으로 동작하지 않습니다.
- 마지막으로 유효한 인덱스는
count - 1
필요한 것은1..<myArray.count
- 배열에서 요소를 제거하면 요소가 짧아지므로 매번 인덱스가 변경됩니다.
어레이에서 모든 것을 삭제하려는 경우 다른 사용자가 제안한 대로 다음을 사용해야 합니다.
myArray.removeAll()
첫 번째 요소만 원하는 경우 첫 번째 개체에 대한 참조를 가져올 수 없습니다.배열을 비운 다음 개체를 다시 추가합니다.
var firstElement = myArray.first!
myArray.removeAll()
myArray.append(firstElement)
코드가 작동해야 합니다. 범위를 벗어났습니다.
스위프트 3
existingArray = []
이를 통해 빈 어레이를 기존 어레이에 다시 할당하면 데이터 유형이 참조됩니다.
또는 다음을 사용할 수 있습니다.removeAll
어레이에서 모든 요소를 제거하고 기존 용량을 유지하는 옵션을 제공합니다.
existingArray.removeAll()
은 거는입니다.mutating
메서드를 호출하는 배열이 변경됨을 의미합니다(빈 상태).
Kyle은 올바른 방향으로 가고 있지만 열거하는 동안 가능한 인덱스가 감소하여 불법 인덱스로 이어지기 때문에 코드가 실패합니다.
그것을 해결하는 한 가지 방법은 거꾸로 열거하는 것이다.빠르게 이것은 보폭을 이용하여 이루어진다.
for index in stride(from: myArray.count - 1, through: 0, by: -1) {
myArray.removeAtIndex(index)
}
는 '보다 낫다'를 사용하는 것입니다.filter()
스위프트 1.2
myArray = filter(myArray, { (obj) -> Bool in
return false
})
스위프트 2
myArray = myArray.filter{ (obj) -> Bool in
return false
}
Swift 2에는 removeAllObjects() 메서드가 있습니다.
Syntax : public func removeAllObjects()
Eg.: mainArray.removeAllObjects
특정 인덱스에서 요소를 삭제하려면 다음 명령을 사용합니다.
Syntax : public func removeObjectAtIndex(index: Int)
Eg.: mainArray.removeObjectAtIndex(5)
마지막 요소를 삭제하려면 다음 명령을 사용합니다.
Syntax : public func removeLastObject()
Eg.: mainArray.removeLastObject()
특정 범위의 요소를 삭제하려면 다음 명령을 사용합니다.
Syntax : public func removeObject(anObject: AnyObject, inRange range: NSRange)
특정 요소를 삭제하려면 다음 명령을 사용합니다.
Syntax : public func removeObject(anObject: AnyObject)
아래 스크린샷은 NSMutableArray 확장에서 사용 가능한 메서드 목록입니다.
다음 작업도 수행할 수 있습니다.
for _ in myArray
{
myArray.removeAtIndex(0)
}
코드 는 코드 샘플의 작성 입니다.for
루우프Index
디폴트로는0부터 시작합니다.숫자 범위 뒤에 숫자를 추가하는 것은 for 루프를 작성하는 올바른 방법이 아닙니다.이치노을 나타내다
for index in myArray.indices {
// Do stuff
}
이 답변이 Swift나 프로그래밍을 처음 접하는 사람들에게 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/31183431/swift-delete-all-array-elements
'programing' 카테고리의 다른 글
매일 오후 10시에 cron을 한 번 실행하는 방법 (0) | 2023.04.23 |
---|---|
맨 아래 행을 선택하는 방법 (0) | 2023.04.23 |
의미 (0) | 2023.04.23 |
Visual Studio에서 Git 사용 (0) | 2023.04.23 |
배치 파일을 사용하여 폴더의 모든 내용을 다른 폴더로 복사하시겠습니까? (0) | 2023.04.23 |