2014-07-25 1 views
0

신속하게 여러 프로토콜로 Objective c 메시지를 정확히 어떻게 호출합니까? 이것은 내가 브리지 된 모든 헤더를 일으킨 후에입니다.여러 인수가있는 Swift에서 Objective C 메서드를 호출하는 방법

Objc 메시지 :

NSString *TheDeviceId = [[[[MyLocationService instance] getTheDeviceType] getUserID] getUserValue]; 

스위프트 메시지 :

var TheDeviceId = MyLocationService.instance (getTheDeviceType: AnyObject ,getUserID: AnyObject , getUserValue: AnyObject) 
+1

그것은 그것은 각각 다른 함수 호출 – Mark

답변

1

사람들은 다양한 방법에 대한 복수의 호출은, 당신은 개별적으로 각 하나를 호출해야합니다. 그들을 함께 묶을 수 있어야합니다.

MyLocationService.instance().getTheDeviceType().getUserID().getUserValue() 

각 메소드는 직전에 호출 된 메소드의 리턴 값에 대해 호출됩니다.

4

여러 개의 인수가있는 단일 메시지가 아닙니다. 튜브 일련의 메시지입니다. 이전 호출의 반환 값에 대해 수행 된 각 추가 메서드 호출입니다. 귀하의 ObjC (일부 중간 클래스 이름에서 추측으로)하는 것과 같습니다

let service = MyLocationService.instance() 
let theType = service.getTheDeviceType() 
let userID = theType.getUserID() 
let theDeviceID = userID.getUserValue() 

다음 문자열을 다시 :

MyLocationService *service = [MyLocationService instance]; 
MyDeviceType *theType = [service getTheDeviceType]; 
MyUserID *userID = [theType getUserID]; 
NSString *theDeviceID = [userID getUserValue]; 

당신은 그것을 스위프트에 동일한 작업을 수행하기 위해 아주 간단 볼 일단

MyLocationService.instance().getTheDeviceType().getUserID().getUserValue() 
+2

에 의해 반환 된 객체에 아무런 매개 변수와 행동을 취하지 그리고 아마도 그래서 필요로하는 여러 가지 방법으로 구성되어 여러 프로토콜을 가지고 있지 않습니다 함께 간결함을 위해 메소드가 nil을 반환 할 수있는 경우 옵션 체인 연결. –

관련 문제