2011-12-17 23 views
1

UIDocumentファイルのiCloud同期をオフにしようとするとエラーが発生します。他の誰かがこの問題に遭遇したのではないかと思います。ここではシナリオがあります:setUbiquitousでUIDocumentファイルのiCloud同期をオフにするとエラー(LibrarianErrorDomainエラー2)

私はアプリのサンドボックス内でローカルUIDocumentファイルを作成し、iCloudのでファイルの同期を開始するには、以下の呼び出しを行います。

[[NSFileManager defaultManager] setUbiquitous:YES itemAtURL:localPathURL destinationURL:cloudPathURL error:&error]; 

すべてがswimminglyだろう。

今、このファイルのiCloud同期を停止します。

私は最初のファイルには、少なくとも以下を呼び出すことで、iCloudのと同期されていることを確認してください。

- (BOOL) isDataFileSyncedWithCloud 
{ 
    if (![self isICloudSupported] || ![self isUsingICloudForFiles]) 
     return NO; 

    NSURL* file = [self getFileURLToCloudDatafile]; 
    NSNumber* isInCloudNum = nil; 

    if ([file getResourceValue:&isInCloudNum forKey:NSURLIsUbiquitousItemKey error:nil]) 
    { 
     // If the item is in iCloud, see if it is downloaded and uploaded. 
     if ([isInCloudNum boolValue]) 
     { 
      NSNumber* isDownloadedNum = nil; 
      if ([file getResourceValue:&isDownloadedNum forKey:NSURLUbiquitousItemIsDownloadedKey error:nil]) 
      { 
       NSNumber* isUploadedNum = nil; 
       if ([file getResourceValue:&isUploadedNum forKey:NSURLUbiquitousItemIsUploadedKey error:nil]) 
       {      
        return ([isDownloadedNum boolValue] && [isUploadedNum boolValue]); 
       } 
      } 
     } 
    } 

    return NO; 
} 

上記戻りYES、ファイルを示すが同期されている(またはそう思いました...)だから、

、今私が先に行くとのiCloudは、このファイルの同期を停止するには、以下の呼び出しを行います。

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:localPathURL destinationURL:cloudPathURL error:&error]; 

と、私は次のエラーを取得する:「操作を完了できませんでした(リーbrarianErrorDomainエラー2 - 同期されていないアイテムで同期を無効にすることはできません)。 "

このエラーがなぜ発生しているのか、どのように取り除くことができますか?私はファイルが完全に同期されていると思っていたでしょう...

ありがとうございます!

答えて

2

私はそれを理解しました。 iCloud同期を無効にするには、私は誤って呼び出していました:

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:localPathURL destinationURL:cloudPathURL error:&error]; 

代わりの

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:cloudPathURL destinationURL:localPathURL error:&error]; 
関連する問題