10

リマインダーを追加および削除できるように、リマインダー カレンダーを作成しようとしています。私が使用しているデバイス (iPhone 5/4S/4) では実際に問題なく動作していますが、まだ iPhone である特定のクライアント デバイスでは、リマインダーをサポートしていないアカウントに関する以下のエラーが表示されます。

ワークフローは次のとおりです。

* Init the event store.
* Request permission (check its granted for Reminder types) (iOS6+) for lower we just init.
* Create a new calendar, local storage, type = Reminder
* Save calendar to get its Identifier.

ほとんどの場合動作しますが、これは一部のデバイスで表示されます -

Error Domain=EKErrorDomain Code=24 “That account does not support reminders.” 

アクセス許可は、[設定]、[プライバシー]、[リマインダー] で付与および確認されます。このエラーが発生する条件について、ドキュメントには何も見つかりません。

ありがとう!

4

4 に答える 4

5

これがまだ必要かどうかはわかりませんが、ここに私が遭遇したものがあります。

まず第一に、ローカル ソースのカレンダーではリマインダーを設定できないと確信しています。「そのアカウントはリマインダーをサポートしていません」というメッセージが表示され続けました。イベントストアにコミットする前に、カレンダーにすべての非読み取り専用プロパティを設定した後でも、まだ機能しませんでした。ソースは calDav である必要があります。次に、Devfly の応答を試しましたが、別の理由でうまくいきませんでした。リマインダーの設定を許可しない私のGmailカレンダーを取得し続けました(実際には、イベントとリマインダーの読み取り専用だと思います)。だから私は実際のiCloudソースを取得するために次のコードを使用しました

    for (EKSource *source in sources) {
        NSLog(@"source %@",source.title);
        if (source.sourceType ==  EKSourceTypeCalDAV && [source.title isEqualToString:@"iCloud"]) {
            localSource = source;
            break;
        }
    }

新しいリマインダーカレンダーでこのソースを設定すると、うまくいきました。それが誰かを助けることを願っています

于 2013-05-21T16:37:55.400 に答える
0

ローカル ストアがリマインダーをサポートしていない可能性があります。これは、iCloud が有効になっている場合に再現可能です。

これは、仮定をハードコーディングせずに見つけることができる最も信頼できるソリューションです。

    let calendar = EKCalendar(forEntityType: .Reminder, eventStore: eventStore)

    if eventStore.sources.count == 0 { // reproducible after Reset Content and Settings
        calendar.source = EKSource()
    }
    else {
        calendar.source = eventStore.defaultCalendarForNewReminders().source
    }

    eventStore.saveCalendar(calendar, commit: true)
于 2015-10-02T17:04:48.607 に答える