참고 :이 대부분을 알아 냈습니다. 끝에있는 업데이트를 확인하십시오. 아직도 약간 혼란.은 Swift 3/iOS 10에서 continueUserActivity를 트리거 할 수 없습니다.
Swift 3에서 Xc8b6에서 NSUserActivity 처리를 구현하고 처리기 프로토콜 메서드의 메서드 서명에 문제가 있습니다. 현재 문서에서
는 방법이라고합니다 : 이것은 신속한 헤더 인터페이스에 표시되는 내용과 약간 다른func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool
. 저기, 수복물의 반환 유형은 신속합니다. 무효. 나는이 때
, 내가 오류는 다음과 같습니다
목표 - C 방법 '응용 프로그램 : 계속 : restorationHandler는'방법으로 를 제공하는 '응용 프로그램 (_ : 계속 : restorationHandler :'하지 않습니다 경기 요구 사항의 선택 ('응용 프로그램 : continueUserActivity : restorationHandler :')
나는 컴파일러 경고가 지금 좋은하지 않습니다 실현,하지만 난이의의 Obj-C 방법 서명을 찾았다 뜻이 걸릴 ,하지만 그건 어떻게 든 내 주장 꽤 일치하지 마라.
어디로 갈 지 잘 모르겠습니다. 거기에있는 것과 일치하지만 뭔가이 잘못되었습니다. 무작위 추측과 확인은 아직 나를 도왔다.
흥미롭게도, 자동 완성은 나에게 다른 방법 서명을주는이 일에 대한
public func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: ([Any]?) -> Void) -> Bool
좋은 것은 그것이 컴파일 것입니다. 덜 좋은 점은 Spotlight에서 인덱싱 된 항목을 선택하고 탭하여 앱을 시작하면 트리거되지 않는다는 것입니다.
확실히 NSUserAction이 앱을 올바르게 식별하여 시작했습니다. 내가 복구 할 수없는 곳에서 내가 누락 될 수있는 뭔가가 있나? 핸들러? 이것은 iOS 9에서 잘 돌아가는 프로젝트에서 변환 된 것입니다.
또한 What 's New With Search의 WWDC 비디오에서 프로토콜 메소드 서명의 다른 버전을 보았습니다. 나는 그것을 시험해 보았지만 컴파일했지만 트리거하지는 않았다.
스위프트 3 변환 도구를 완료 한 후 서명 한 것입니다. 그것은 컴파일하지만, 스포트라이트에서 시작할 때 트리거되지 않은 : -----
확인
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]) -> Void) -> Bool
---- 업데이트. 따라서 위에서 언급 한 첫 번째 메소드 서명이 올바른 것입니다. 문제는 AppDelegate의 확장에서 정의하고 있다는 것입니다. 이것은 Swift 2.x에서 정상적으로 작동했습니다.
나는 그것을 위로 옮겼다. 그리고 모든 것은 멋지다. 하지만 확장에서 프로토콜 메서드를 구현할 때 이러한 컴파일 오류가 발생하는 이유에 대해 더 잘 이해하고 싶습니다. 프로토콜 준수를 통해 더 이상 수행하지 않습니까? 확장 프로그램에 추가하려고하면 복제본임을 나타내는 오류가 발생하므로 그럴 것이라고 생각하지 않습니다.
프로토콜 확장에 함수를 추가하면 원래 프로토콜 정의 안에 함수를 추가하는 것과 같습니다. 그래서 복제본이라는 오류가 발생합니다. 프로토콜 확장이 특정 유형에만 해당되는 경우 다른 이야기입니다. – user1046037
프로토콜 확장이 아닙니다. 이전 질문에 답을 얻었으므로 이제 새로운 질문을 만들어야 할 것입니다. 잠깐 - 확장 기능은 다음과 같습니다. 확장 AppDelegate { 그래서 프로토콜은 확장하지만 클래스는 확장하지 않습니다. – jeffro37