3

iOS用のiCloudカレンダー同期を実装しようとしています。アイデアは、私のアプリから新しいカレンダーを作成し、iCloud同期が実際にオンになっているときにそれをiCloudと同期することです。対応するソースを取得するために、次のコードを使用しています。

EKSource * localSource = nil;

for(EKSource * source in self.eventStore.sources){if(source.sourceType == EKSourceTypeCalDAV && [source.title isEqualToString:@ "iCloud"]){localSource = source; 壊す; }

}

次に、そのソースでカレンダーを作成して保存します。

iCloud同期がオンで、カレンダー同期がiPhone->設定->iCloud->カレンダーからiCloudでもオンになっている場合は問題なく動作しています。上記の設定からカレンダーの同期をオフにすると、理論的には、そのストアでカレンダーを作成できなくなります。しかし実際には、その場合でも、アプリケーションから対応するiCloudストアを取得し、新しいカレンダーを作成/保存することができます。新しいカレンダーを作成した後、iPhoneのカレンダーリストに表示されません。しかし、iCloud Webインターフェースにログインすると、追加したばかりの同じ名前のカレンダーがたくさん表示されます。その名前のカレンダーの数はますます増えています。iCloudのカレンダー同期に無限ループの問題があるような継ぎ目。これまでのところ、それのような縫い目」

4

1 に答える 1

0

これを理解したかどうかわからない場合は、解決策を投稿してください:-)

しかし、これはバグのようです。Mac で iCal を確認したところ、カレンダーが重複して読み込まれています。

それを理解するだけですが、私が作業していると思う大まかなコードは、EKSourceでカレンダーを作成し、そのカレンダーを確認することです。

このようなもの:

-(BOOL)testCal {
  BOOL cal = 0;

  NSUInteger counter = 1;
  for (EKCalendar *thisCalendar in [[DGEK eventStore]calendars] ){
    NSLog(@"%@", thisCalendar.title);
    if ([thisCalendar.title isEqualToString:@"YourCalName"]) {
        cal = YES;
        return cal;
    }
    counter++;
  }
  return cal; 
}

それはうまくいくと思います。現時点では、さらにいくつかのテストを行っています。

Cal が存在しない場合、次のようなデフォルトのソースを取得しています。

source = [[[self eventStore] defaultCalendarForNewEvents] source];

それが役立つことを願っています。

于 2012-12-08T08:56:35.397 に答える