2017-05-05 1 views
0

저는 Swift에서 응용 프로그램을 만들고 있는데, 아주 비슷한 스크린을 표시하기 위해 2 개 장소에서 사용하려고하는 뷰 컨트롤러가 있지만 약간의 마이너가 있습니다 차이.특정 프로토콜을 준수하는 객체가 될 수있는 속성을 가지고 있습니다.

나는 myProtocol이라는 프로토콜을 가지고 있는데이 프로토콜을 준수하는 viewModel이라는 속성을 가진보기 컨트롤러가 있습니다. viewModel은 aViewModel 또는 bViewModel의 인스턴스가 될 수 있지만 둘 다 프로토콜과 동일한 메소드를 갖지만 뷰 컨트롤러가 사용되는 위치에 따라 다른 값을 반환합니다. 이제

, 목표 - C에서 나는 viewModel = [aViewmodel new] 또는 viewModel = [bViewmodel new]로 설정할 수 있습니다 다음

@property (nonatomic, strong) id <myProtocol>viewModel

을 할 수 있습니다. 어떻게 신속하게 비슷한 것을 얻을 수 있습니까?

속성을 let viewModel: myProtocol? = nil (으)로 추가하려고했지만 유형을 유추 할 수 없다는 오류가 발생했습니다. 너희들이 나에게 조언을 해줄 수 있다면 그냥 내 생각에. 나는 빠른 충분히 새로운 해요,하지만 당신은 스위프트 3를 사용하는 가정은 몇 년

답변

2

을위한 오브젝티브 C를 사용하고 있습니다 :

protocol MyProtocol { 
    //... 
} 

var viewModel:MyProtocol? 

class ViewModel: MyProtocol { 
    //... 
}  

viewModel = ViewModel() 
+0

OK, 그 일을! 대단히 감사합니다! – user1898712

+1

당신은 오신 것을 환영합니다. 그래서 우리는 대답을 upvoting하고 동의하여 주셔서 감사합니다. – shallowThought

+0

나는 그 시간에 받아들이려고했으나 기다릴 필요가 있다고 말했고, 나는 서둘러 내 머리카락을 자른다. 그냥 받아 들였습니다. 감사! 또한, 질문을 후속, 해당 프로토콜을 준수 아무것도 (또는 두 번째 프로토콜을 준수하는 기능을 구현하는 대리인이 있어야합니다 또는 내가이 잘못 생각하고 있어요 가능한 것을 말할 수 있습니까? – user1898712

관련 문제