2016-09-29 16 views
5

application:openURL:options: phương pháp ủy nhiệm ứng dụng. Phương pháp phải gọi phương thức handleURL của cá thể GIDSignIn, sẽ xử lý đúng URL mà ứng dụng của bạn nhận được ở cuối quá trình xác thực.Google đăng nhập tham chiếu mơ hồ vào thành viên 'subscript'

Sao chép trực tiếp từ tài liệu hướng dẫn firebase nhưng vẫn có lỗi.

func application(application: UIApplication, openURL url: NSURL, options: [String: AnyObject]) -> Bool { 
    return GIDSignIn.sharedInstance().handleURL(url as URL!, sourceApplication: 
     options[UIApplicationOpenURLOptionsSourceApplicationKey] //Error is here 
     //Ambiguous reference to member 'subscript' error is shown. 

     as? String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey]) 
} 

Trả lời

25

Bạn có một vài vấn đề. Phương pháp đại biểu cần có chữ ký sau đây trong Swift 3:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool 

và cả phương pháp sẽ là:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 
} 
+0

tôi nhận chủ đề 1: tín hiệu SIGABRT lỗi trong App Đại biểu sau khi chạy các ứng dụng và nhấn vào nút đăng nhập google –

+0

Are '_' &' open' tên thông số bên ngoài? Tại sao 'tùy chọn' không có tên thông số bên ngoài? – Honey

+1

@Honey Đó là các nhãn đối số được sử dụng bởi người gọi của phương thức. '_' có nghĩa là không có tên nào được cung cấp cho tham số. Và nếu đối số không có nhãn riêng biệt (như 'tùy chọn'), thì bạn sử dụng tên tham số làm nhãn đối số. Đây là tất cả được bảo hiểm trong cuốn sách "Ngôn ngữ lập trình Swift" của Apple cho Swift 3. – rmaddy

0

Nếu bạn đang sử dụng nhiều chương trình URL cùng với Google Đăng nhập, sử dụng nó như thế này :

func application(application: UIApplication, 
       openURL url: NSURL, 
       options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 

    return GIDSignIn.sharedInstance().handle(url as URL!, 
              sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, 
              annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 

} 
Các vấn đề liên quan