Tôi đang cố gắng di chuyển từ từ từ Obj-C sang Swift. Bước đầu tiên của tôi là di chuyển các phương thức nhỏ, đơn giản sang các phần mở rộng Swift vì vậy tôi quyết định thử và di chuyển didRegisterForRemoteNotifications
nhưng điều đó không hiệu quả vì nó cho rằng phương thức được thực hiện ở đâu đó trong mã Objective-C của tôi. Không phải vậy.Triển khai didRegisterForRemoteNotificationsWithDeviceToken trong tiện ích mở rộng Swift không hoạt động
Tôi đang sử dụng Xcode 7.3 (7D175)
Dưới đây là một số bước tái tạo:
- Tạo một dự án obj-C mới.
- Tạo tệp Swift trống mới có tên
AppDelegate-Extension.swift
. Điều này cũng tạo ra một tập tin tiêu đề Bridging. - Thêm
#import AppDelegate.h
vào tệp tiêu đề Ẩn. Đến file Swift trống và gõ:
extension AppDelegate { public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { } }
Điều này làm cho trình biên dịch để phàn nàn:
method 'application(_:didRegisterForRemoteNotificationsWithDeviceToken:)' with Objective-C selector 'application:didRegisterForRemoteNotificationsWithDeviceToken:' conflicts with previous declaration with the same Objective-C selector public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { ^ __ObjC.AppDelegate:38:17: note: 'application' previously declared here public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
Tôi đang làm gì sai?
EDIT: Một số ý kiến cho rằng tôi đã cố gắng:
Add
override
to the method declaration so it readsoverride public ...
này trả về lỗi sau (ngoài các lỗi ban đầu)
error: method does not override any method from its superclass override public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
bạn có ý nghĩa gì về tệp tiêu đề nhanh? Bạn nên tạo lớp Bridge và nhập 'AppDelegate.h' của bạn ở đó –
Xin lỗi, đó là chính xác những gì tôi có ý nghĩa. Tôi đã chỉnh sửa câu hỏi để phản ánh điều này. – OlivaresF
thử 'override func ứng dụng (ứng dụng: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {' –