2017-09-29 5 views
2

내 응용 프로그램을 Xcode 9 및 iOS 11로 업그레이드 한 이후로 EventKit에 일부 불일치가 발생했습니다.iOS 11의 EventKit 문제 발생

  • 예를 들어 새 이벤트를 만들 때 속성이 String!으로 선언되면 event.eventIdentifier는 nil을 반환합니다. iOS11 이전에는 빈 문자열이 반환되었습니다.
  • 또 다른 문제는 속성이 String으로 정의 된 경우에도 내 사용자 중 한 명이 이벤트에서 nil 제목을 얻는 것입니다.
  • 특정 작업을 편집 할 때 표준 EventKitUI 편집기를 사용할 때 내 앱이 충돌한다는 또 다른 보고서가 나타납니다.

다른 사람이 비슷한 문제를 겪고 있는지 묻습니다. 오래 전 이미 베타 버전이었던 버그 보고서를 이미 제출했습니다.

업데이트 : 나는 비슷한 경험 있어요 34134523

+0

iOS 11 버그 만 직접보고 있습니다. 10 sim, 11 sim 및 10 장치에서 확인되었습니다. 버그는 11 장치에 repros. Events, yay –

답변

1

: 애플의 중복으로 내 버그 리포트를 플래그있다. 기본 캘린더를 가져올 수 없기 때문인 것으로 보입니다. 나는 단위 테스트에서 이것을보고있다. 기본 캘린더가 실패하는 이유를 아직 알 수 없습니다.

[EventKit] 오류가 새로운 이벤트에 대한 기본 달력을 받고 : 그것은 String! 경우 오류 도메인 = EKCADErrorDomain 코드 = 1019 "(널)"

0

글쎄, 그것은 전무를 반환 할 수 있습니다 (AN 암시 옵션 풀어). (확실 할 것 : nil이 가능한 반환 값이 아니면 정확히 보장을 제공하는 String 일 것입니다.)

이것은 이제 세 번째 지점에서 충돌하는 이유입니다. API가 선택적을 반환하면 nil을 검사해야합니다 (정규 Swift 4에서 컴파일 할 때 선택 옵션을 사용해야 할 수도 있음). event.title ?? 'no title'처럼 간단 할 수 있습니다.

첫 번째 두 가지 변경 사항은 나에게도 합리적인 것 같습니다.

첫 번째는 API의 픽스이며 eventIdentifier에 빈 문자열을 반환하는 것은 잘못된 것입니다. nil (식별자가 할당되지 않은 것을 의미)을 반환해야합니다.

둘째로 의미가 있습니다. 제목은 iCalendar (요약 속성)의 필수 필드가 아니므로 API에 누락 된 제목 (빈 제목)이 올바르게 반영됩니다.

API를 변경하지 않았다고 가정하면 (이 경우는 3.2 버전의 경우는 아님)이 모든 것이 괜찮은 것으로 보입니다. 코드에서 nil 값을 제대로 확인하지 못했습니다.

+0

암시 적으로 래핑되지 않은 옵션 인 경우 왜 nil 값을 확인해야합니까? 그게 그게 아닌가? 나는 당신이 옳다고 생각합니다. 새로운 이벤트에 대한 가치를 얻는 것이 낫지 만,이 새로운 행동을 이벤트 키트 API에 반영해야합니다. –

+0

"암시 적으로 래핑되지 않은 선택 사항 인 경우 무효 값을 확인해야하는 이유는 무엇입니까? 아니요, * non * -Optional 유형의 지점이됩니다. 암시 적으로 래핑되지 않은 옵션은 옵션이 * 보통 * non-nil 인 상황에서 주로 편리합니다.그것은 보증은 아니지만,이 경우에는 하나의 선택형을 처음에는 사용하지 않을 것입니다. "이벤트 키트 api에서이 새로운 동작을 반영해야합니다." API가 변경되지 않았습니다. 이전에 nil 값을 반환하는 것이 허용되었습니다. – hnh

+0

나는 그것이 정규이어야 함에 동의한다. 선택 사항. 그리고 아마 Swift 4 (점검 할 가치가있을 것입니다)에 있습니다. Swift 3.2의 핵심은 API (인터페이스)가 변경되지 않고 소스 코드가 그대로 컴파일된다는 것입니다. – hnh