objective-c - NSFileManager setUbiquitous:是,我的文件陷入了困境!为什么?

标签 objective-c ios ipad icloud nsfilemanager

我有一个很奇怪的问题。当我使用NSFileManager setUbiquitous函数时,我的文件被推送到iCloud,但是当我在一秒钟后检查此文件是否存在时,该文件不再存在!看来iCloud刚刚删除了我的文件,这可能吗,为什么?有人遇到过这个问题吗?

static void moveItem( CD_ICloudOperationItem *item, bool toCloud,  NSURL *srcDocumentURL, NSURL *srcThumbnailURL, NSURL *dstDocumentURL, NSURL *dstThumbnailURL)
{
  dispatch_queue_t mainQueue = dispatch_get_main_queue();
  dispatch_queue_t operationQueue = dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 );

  dispatch_async(operationQueue, ^(void) {    
    __block NSError *err1 = nil;
    NSFileManager * fm = [ NSFileManager defaultManager];
    __block bool success1 = true;
    NSString *message = nil;


    success1 = [fm setUbiquitous:toCloud itemAtURL:srcDocumentURL destinationURL:dstDocumentURL error:&err1];

    bool fileExits = false;
    if (toCloud) {
      fileExits = [fm isUbiquitousItemAtURL:dstDocumentURL];
      if (!fileExits) {
        NSLog(@"---> File has NOT been moved correctly!!!! [%@]", dstDocumentURL);
        NSLog(@"%@",[err1 description]);
      }
      else{
        NSLog(@"---> File has been moved correctly!!!! [%@]", dstDocumentURL);
      }
      sleep(1);
      fileExits = [fm isUbiquitousItemAtURL:dstDocumentURL];
      if (!fileExits) {
        NSLog(@"---> After 1 sec file has disappear!!!! [%@]", dstDocumentURL);
        NSLog(@"%@",[err1 description]);
      }
      else{
        NSLog(@"---> After 1 sec file still there!!!! [%@]", dstDocumentURL);
      }
    }
    else{
      fileExits = [fm fileExistsAtPath:[dstDocumentURL path]];
      if (!fileExits) {
        NSLog(@"---> File has NOT been moved correctly!!!! [%@]", dstDocumentURL);
        NSLog(@"%@",[err1 description]);
      }
      else{
        NSLog(@"---> File has been moved correctly!!!! [%@]", dstDocumentURL);
      }
    }

    if( !success1 )
    {
      success = false;
      message = meaningfulMessageFromError( err1 );
      NSLog(@"%@",[err1 description]);
    }

    dispatch_async( mainQueue, ^(void) {
      postNotification( item, success, message );
    });
  });
}

看我的踪迹:
 ---> File has been moved correctly!!!! [file://localhost/private/var/mobile/Library/Mobile%20Documents/U5LPYJSPQ3~com~my~container-imobile/Documents/Untitled_(2).fbdi]
---> After 1 sec file has disappear!!!! [file://localhost/private/var/mobile/Library/Mobile%20Documents/U5LPYJSPQ3~com~my~container-imobile/Documents/Untitled_(2).fbdi]

最佳答案

讨论

使用此方法将文件从其当前位置移动到iCloud。
对于位于应用程序沙箱中的文件,这实际上涉及
从沙箱容器中删除文件。 (系统会扩展您的
应用的沙盒特权,以使其有权访问其移至的文件
iCloud。)您还可以使用此方法将文件移出iCloud和
回到本地目录。

文件已从srcDocumentURL(沙盒)物理移动到dstDocumentURL。试试这个:

NSLog(@"[%@]", [ [ NSFileManager defaultManager ] contentsOfDirectoryAtURL:destinationURL includingPropertiesForKeys:nil options:nil error:nil ]);

关于objective-c - NSFileManager setUbiquitous:是,我的文件陷入了困境!为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12676278/

相关文章:

ios - 为 iOS 应用程序进行 UX 的最佳且最简单的方法

ios - HTML5音频无法在UIWebView iOS上播放?

iphone - 模态视图 Controller 上的内存警告和旋转

iphone - 如何根据当前日期获取下一个 15 天的日期?

ios - 如何检测指纹传感器不可用的设备

iphone - UIDocumentsInteractionController 显示 iBooks 但不打开它

ios - 地理围栏 (CLCircularRegion) 和 iBeacons (CLBeaconRegion) 是否共享 20 个限制?

ipad - 以两页模式呈现 ePub

iphone - 即使页面稍后加载,也会使用 UIWebView 调用 didFailLoadWithError

iphone - 使用 UIAppearance 为 UIBarButtonItem 设置后退按钮的文本颜色?