2014-12-13 3 views
1

performSegueWithIdentifier:sender: 메소드를 사용 중이므로 sender 매개 변수를 통해 여러 개의 인수를 전달하고 싶습니다. Objective-C에서는 @{"myKey": myValue} 구문을 사용하여의 NSDictionary 을 즉석에서 작성했습니다.사용자 정의 열거 형을 값으로 사용하여 Swift에서 사전 작성하기

스위프트에서 여러 가지 방법을 시도했지만 컴파일러는 항상 저에게 종류의 오류를줍니다 : 'AnyObject?' { '요소'또는 '키'}라는 멤버가 없습니다

Swift에서 예상되는 동작을 재현하는 방법은 무엇입니까? 감사!

편집 : 당신이 필요로하는

[("image", image), ("fitler", filter)] 

:

self.stopCamera() 
dispatch_async(dispatch_get_main_queue(), {() -> Void in 
    self.performSegueWithIdentifier("backCameraVCtoFrontCameraVC", sender: [("image", image), ("fitler", filter)]) 
}) 
+1

코드를 게시하십시오. – zaph

+0

Swift Dictionary는 개체가 아니며 구조체입니다. – zaph

+0

동의 하긴하지만 내 작업을 수행하기위한 조언은 무엇입니까? –

답변

5

귀하의 구문은 튜플의 배열을 만드는 : 여기에 내 코드입니다

["image": image, "filter": filter] 

의견에 명시된 바와 같이를 filter 맞춤 enum입니다 WDFilterType. WDFilterTypeAnyObject이 아니기 때문에 NSDictionary에 넣을 수 없습니다. 해결 방법은 rawValue을 사전에 넣고 다른 끝에 다시 구성하는 것입니다. 수신단에이어서

["image": image, "filter": filter.rawValue] 

이 경우 필터에서

if let dict = sender as? NSDictionary { 
    let filter = WDFilterType(rawValue: (dict["filter"] as Int)) 
} 

선택적 ( WDFilterType?) 것 래핑되어야한다.

+0

이 방법을 시도하고 오류가 발생했습니다 : * 'AnyObject!' 'Key'*라는 멤버가 없습니다. ' –

+0

@sweepy_ 수신 측에서 올바르게 캐스팅하지 않았기 때문에 발생합니다. 'self.performSegueWithIdentifier ("backCameraVCtoFrontCameraVC", 보낸 사람 : [ "image": image, "filter": filter] 발신인은 Swift의 AnyObject 인 ID입니다. 키 값을 가져 오기 전에 사전에 캐스팅해야합니다. – Abizern

+0

@Abizern 수신 측이 아니라 위에서 언급 한 행에서 컴파일하기 전에 오류가 발생합니다. –

관련 문제