스위프트에서 클로저로 완성 블록 쓰기

블록의 개념을 잘 처리 한 후에도 가장 간단한 블록 만 쓰고 싶을 때마다 구문을 찾아야했습니다(감사합니다 fuckingblocksyntax.com).클로저로 알려진 블록의 스위프트의 버전은 구문에 훨씬 청소기,더 자연스러운 접근 방식을. 완성 블록을 작성하여:그래서 속히,시간은 폐쇄에게 아빠가 가르쳐 방법을 배울 수 있습니다.

자신의 방법을 맹목적으로 작성하기 전에 애플의 코드 샘플 중 하나를 사용하여 구문을 숙지 해보십시오. 토끼와 근시안적인 개발자들의 경악에,캐럿(^)은 스위프트에서(아직)어디에도 발견되지 않는다. 평화 오랜 친구에서 휴식,당신은 키워드in로 대체되었습니다. 매개 변수 및 폐쇄에 대 한 반환 값을 선언 완료 되 면in키워드를 사용 합니다. 내가 원하는 방법을 알고 나면 자동 완성이 채워진 것을 보여 주면 더 의미가 있습니다:

UIView.animateWithDuration(duration: NSTimeInterval, animations: (() -> Void)?, completion: ((Bool) -> Void)?)

이 구문에 초점을 맞추면 매개 변수를 올바르게 작성하고 클로저의 값을 반환하는 방법이 명확 해집니다:

{(parameters) -> (return type) in expression statements}

위의 스위프트 코드 예에서,애니메이션 클로저 모두 무효 반환,그래서 우리는 모두 함께 반환 유형 구문을 삭제할 수 있습니다. 당신은 단지 매개 변수에 대한()를 볼 이유입니다. 첫 번째 폐쇄에서와 같이 매개 변수가 없더라도 키워드in앞에 빈()이 여전히 필요합니다. 그들은 필요합니다. 당신이 그것을 기억 있도록 굵게.

좋아,이제 완료 폐쇄와 함께 우리 자신의 신속한 방법을 작성 해보자. 이 게시물의 맨 아래에 링크된 깃허브 리포지토리에서,저는 깃허브 클라이언트 앱에서 코드 펠로우로 구성된 팀과 함께 작업하고 있습니다. 이 프로젝트에는 모든 비동기 네트워크 호출을 처리하는 네트워크 컨트롤러가 있습니다.

클라이언트의 검색 쿼리에서 사용자 목록을 검색하는 메서드를 작성해 보겠습니다. 이 메서드는 요청 뷰 컨트롤러가 네트워크 호출이 완료되는 시점을 알 수 있도록 완료 클로저가 필요하며 컬렉션 뷰를 채울 사용자 모델 배열을 제공합니다.

함수의 시그니처가 다음과 같습니다:

func searchUsersWithSearchTerm(searchTerm: String, completionClosure: (users :User) ->()) 

여기에 두 가지 매개 변수가 있습니다:검색 용어와 완료 폐쇄라는 문자열 유형. 폐쇄 매개 변수의 구문을 알 수 있습니까? 먼저 우리가 메서드에서 나중에 호출하는 방법입니다 우리의 폐쇄의 이름입니다,다음 매개 변수(사용자의 배열),우리의 반환 값 다음에(무효). 다음은 이 메서드의 본문이 어떻게 생겼는지에 대한 근사치입니다:

 //setup a NSMutableRequest with the correct API URL and parameters //setup a dataTask on our NSURLSession instance //once our datatask has successfully retrieved the data we wanted, and we have parsed through it to create an array of User Models, we call our completion closure like this: var users : User = //Parse the JSON data into Users completionClosure(users: users)

그것은 단지 다른 함수처럼 호출,우리는 매개 변수로 배열에 전달해야합니다,그것은 우리가 우리의 함수 서명에 그것을 정의하는 방법이기 때문에. 나는 의도적으로 내가 할 수있는 한 짧은이 게시물을 유지하기 위해 모든 네트워킹 코드를 왼쪽,하지만 당신은 어떻게 작동하는지 보는 데 관심이 있다면 깃허브 저장소를 체크 아웃 주시기 바랍니다. 우리는 가까운 장래에 스위프트에서 네트워크에 블로그 게시물을 가질 계획입니다.

내가 주목하고 싶은 한 가지 더 내가 우리의mainQueue()에서addOperationWithBlock()을 호출하는 방법입니다. 클로저가 함수 서명의 마지막 매개 변수인 경우 특수 구문을 사용하여 더 깨끗하게 만들 수 있습니다. 이를 후행 클로저라고 합니다. 후행 클로저는()의 함수 호출 바로 뒤에 기록됩니다. 아래는 함수 호출이며,먼저 일반 클로저를 사용한 다음 후행 클로저를 사용합니다.

미묘한 차이이며 두 가지 방법이 모두 작동합니다. 그냥 후행 폐쇄 구문을 사용하기 위해 함수의 마지막 매개 변수를해야한다는 것을 기억하십시오.

이제 스위프트에서 클로저의 기본 구문을 알아야합니다. 클로저에 대한 좀 더 고급 수준의 물건을 들어,아이북에 스위프트 프로그래밍 언어를 확인하십시오. 그것은 그들에 대한 전체 하위 섹션을 가지고 있습니다. 그리고 여기 깃허브 클라이언트 프로젝트에 대한 링크가 있습니다.

에 대한 신속한 대응도 이미 있습니다.fuckingblocksyntax.com 호출,당신은 그것을 짐작,빌어 먹을클로저 신탁.확실히 당신이 스위프트 배울 북마크 바에 추가 가치가 컴.

좋은 하루.

전문 개발자가 될 준비가 되셨습니까? 연락 방법을 알아보십시오!

답글 남기기

이메일 주소는 공개되지 않습니다.