2016-09-15 2 views
2

스위프트 3을 업데이트했으며 많은 오류가 발견되었습니다. 다음 줄FBSDKApplicationDelegate를 사용할 때 'subscript'멤버에 대한 모호한 참조

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { 
     FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as? String, annotation: options["UIApplicationOpenURLOptionsAnnotationKey"] as? String) 

     return true 
    } 

내가이 무엇입니까 이유를 잘 모르겠습니다 들어 '첨자'

회원에게

모호한 참조, 다른 사람을 알고 작업을 수행합니다 이것은 그들 중 하나입니다 ?

그것은 이전 버전에서 잘 작동 7.3.1 신속 2. options 사전의 유형 [UIApplicationOpenURLOptionsKey : Any][String: AnyObject]에서 변경이 당신이 지금하고있는 것처럼 당신이 String 대신 UIApplicationOpenURLOptionsKey와 첨자한다는 뜻

답변

3

.

이 시도 :

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    guard let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, 
     let annotation = options[UIApplicationOpenURLOptionsKey.annotation] else { 
      return false 
    } 

    return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, 
                   sourceApplication: sourceApplication, 
                   annotation: annotation) 

} 

이 코드는 options에서 찾고있는 키를 추출하고 FBSDKApplicationDelegate에 전달합니다. 옵션 사전의 값에 액세스하려면 UIApplicationOpenURLOptionsKey.sourceApplicationUIApplicationOpenURLOptionsKey.annotation의 사용에 유의하십시오.

+0

코드는 위의 버전 10.0에서만 사용할 수 있습니다. 만약 내가 여전히 버전 8.4를 사용한다면 어떨까요? 감사합니다 – stevengbu

+0

애플의 설명서에 따르면이 방법의 버전은 iOS9 + 전용입니다. 이 방법이 단순히 양쪽 모두와 호환되지 않는 것 같기 때문에 iOS8과 iOS9를 모두 지원하는 것이 가장 최선의 방법인지 모르겠습니다 .. https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623112 -application – donnywals

+0

예, 사과 규칙을 따라야 할 수도 있습니다. 감사 – stevengbu

1

이것은 빠른 3 전 아이폰 OS 9 이후 버전과 거래와 엑스 코드 (8)

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { 


    return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) 
} 

@available(iOS 9.0, *) 
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 


    return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 

} 

는 희망이 도움이 방법입니다!

관련 문제