2017-03-14 3 views
-3

나는 약간 혼란 스럽다. Objective-C에서이 코드를 가지고 있으며 신속하게 변환해야합니다 (동일한 결과 얻기). 예를 들어 :루프 상응하는 Swift 3

NSArray *cells = [self.someTableView visibleCells]; 

for (SomeTableViewCellClass *someCell in cells){ 
    // some coding 
} 

이 같은 시도하지만,이 someCell 사용하지 않았다라는 오류가 발생, 그것을 제거하기 위해 고려해야

for someCell in cells { // in this line 
    let comeCell = SomeTableViewCellClass 
    // some coding 
} 

을하지만 이런 식으로 할 경우, 그것을 그것은 또 다른 하나의 값을 변환 할 수 없습니다 말합니다 :

for someCell in cells as SomeTableViewCellClass { // in this line 
     // some coding 
} 

내가 여기이 질문에 대한 몇 가지 게시물이 있다는 것을 알고,하지만 난을 읽을만큼, 그들은 조금 다른 내 자신의 코드 NR로 해결 될 수있다 . 2. 내 Objective-C 파일에 이렇게 많은 루프가 있기 때문에 누군가가 나를 도울 수 있고 어떤 상응하는 것이 있으면 대답 해 주시면 감사하겠습니다.

+0

이 답변은 말 그대로 인터넷 상에 있습니다 ... 사과 문서에 대한 링크가 있기 때문에 직접 google에 보내지 않아도됩니다. https://developer.apple.com/library/content/documentation/Swift/ 개념적/Swift_Programming_Language/ControlFlow.html – katzenhut

답변

1

이 시도 :

for cell in cells { 
    if let classCell = cell as? SomeTableViewCellClass { 
     classCell.doSomething() 
     // some coding 
    } 
} 
+0

빠른 답변을 보내 주셔서 감사합니다. 나는 Eendje의 답변이 똑같을 것이라고 믿지만, 당신의 대답은 나를 위해 더 이해할 수 있습니다. 좋은 작품, 고마워. –

3

visibleCellsUITableViewCell 요소의 배열을 반환합니다. 오브젝티브 C에서 당신은 컴파일러에 알려줍니다

for (SomeTableViewCellClass *someCell in cells) { 
    // Do something with `someCell` ... 

} 

작성할 수 있습니다. ". 나는 모든 배열 요소가 실제로 SomeTableViewCellClass의 인스턴스 그냥 날 믿어 있습니다 알고 을"

for someCell in someTableView.visibleCells as! [SomeTableViewCellClass] { 
    // Do something with `someCell` ... 

} 

당신이 잘못된 경우 오브젝티브 C와 스위프트 코드는 모두 충돌합니다, 일부 세포가 아닌 즉 경우 :

구문은 스위프트에 존재하지 않는, 비슷한는 강제 캐스트 것 SomeTableViewCellClass의 인스턴스

더 안전한 용액 경우 패턴 A에 대한 루프이다

for case let someCell as SomeTableViewCellClass in someTableView.visibleCells { 
    // Do something with `someCell` ... 

} 

SomeTableViewCellClass는 서브 클래스의 인스턴스 모든 배열 요소를 열거 한 다른 구성 요소를 생략.

+1

좋은 기능입니다. 그것에 대해 모르십시오. 감사. –