NSMetadataQuery 未完成收集(无通知)

2024-03-12

我正在为我的应用程序制作一个备份管理器(通过 iCloud)。我做了一些测试,基本原理有效。但几天后就停了。我在用着NSMetadataQuery用于搜索备份文件是否存在。我的备份文件名为例如Backup29112011154133.xml其中数字代表备份日期(格式为ddMMyyyyHHmmss)。我检查一下-viewDidAppear:

- (void)viewDidAppear:(BOOL)animated {
    [self checkForRemoteFile];
}

- (void)checkForRemoteFile {
    NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
    if (ubiq) {
        NSMetadataQuery *query = [[NSMetadataQuery alloc] init];
        [query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"%K like 'Backup*'",NSMetadataItemFSNameKey];
        [query setPredicate:pred];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinishGathering:) name:NSMetadataQueryDidFinishGatheringNotification object:query];
        [query startQuery];
    } else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"iCloud is unavailable at the moment" message:nil delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
        [alert setTag:TAG_ALERT_NOICLOUD];
        [alert show];
    }
}

- (void)queryDidFinishGathering:(NSNotification *)notif {
    NSMetadataQuery *query = [notif object];
    [query disableUpdates];
    [query stopQuery];
    [self loadRemoteFile:query];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:NSMetadataQueryDidFinishGatheringNotification object:query];
}

- (void)loadRemoteFile:(NSMetadataQuery *)query {
    if ([query resultCount] == 1) {
        canRestore = YES;
        NSMetadataItem *item = [query resultAtIndex:0];
        // parse the backup file
        [self.tableView reloadData];
    } else {
        canRestore = NO;
        modifDate = @"never";
        backupInfoLoaded = YES;
        [self.tableView reloadData];
    }
}

问题是- (void)queryDidFinishGathering:(NSNotification *)notif永远不会被执行。我在那里放置了断点和 NSLogs ion,但什么也没发生。

我还尝试检查其他通知,例如“查询确实开始收集”和“查询过程”。仅发布“查询已开始”通知。

我还注册了 iCloud 的 AppID 并附加了权利文件。

你能帮我看看发生了什么事吗?也许我错过了什么?


首先,如果 startQuery 不是从 MaintThread 调用的,则 NSMetadataQuery 不起作用。 每个路径的谓词也有可能失败。 以下代码对我有用。

NSURL *mobileDocumentsDirectoryURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
...
query.predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%%K like \"%@*\"", [mobileDocumentsDirectoryURL path]], NSMetadataItemPathKey];
[query startQuery];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSMetadataQuery 未完成收集(无通知) 的相关文章

  • 显示来自 weburl iphone sdk 的 pdf

    我正在开发一个项目 我想显示网站上的 pdf 我有 pdf 的 url 知道如何做到这一点 我还想创建网站上 pdf 的缩略图 您可以在您的设备中显示 pdf 文件 直接将 url 传递给 UIWebView UIWebView webVi
  • iPhone:应用程序安装失败并出现“无效签名者”错误

    iPhone 连接到运行最新 iTunes 版本的 Mac 我 100 确定她的 UDID 在配置文件中 她的iPhone还没有越狱 我们甚至还恢复了出厂设置 我在这一台 iPhone 上安装我们的开发版本时遇到问题 错误是 应用程序 应用
  • 在 iOS 7 中创建 UUID 和 UDID

    我想创建 UUID 我下面有可以创建 UUID 的代码 如何在 iOS7 中创建具有多个供应商相同 ID 的 UDID NSString stringWithNewUUID CFUUIDRef uuidObj CFUUIDCreate ni
  • iPhone OpenGLES 2.0 文本纹理带有奇怪的边框(不是笔划)问题

    我正在使用 CoreGraphcis 创建文本纹理 不幸的是 文本呈现如下 文本颜色与背景相同以展示奇怪的边框 我尝试过使用描边颜色和边框 我认为这是针对 OpenGLES 2 0 而不是 CoreGraphics Create defau
  • 使用其他应用程序打开 pdf

    我正在应用程序中显示 pdf 文件 我想在 nag bar 上显示 打开方式 选项 显示 iPhone 上安装的可以打开相同 pdf 的应用程序 如果用户选择任何应用程序 例如 pdf 查看器 则应该使用 pdf 查看器应用程序打开 pdf
  • ViewWillDisappear 与 dealloc

    我将 NSlog 放入视图控制器的 dealloc 方法中 它不会被一致调用 我确实注意到 ViewWillDisappear 确实总是被调用 将我所有整洁的升级代码移到这里可以吗 将东西设置为 Nil 并释放调用 有人对为什么 deall
  • 如何在按下按钮之前停止响应震动?

    我目前正在制作一个 iPhone 应用程序 动画会对轻微的震动做出反应 这是我的代码 static BOOL SJHShaking UIAcceleration last UIAcceleration current double thre
  • 如何向用户显示我的App当前的项目版本?

    我想将当前版本添加到我的应用程序的 关于 部分 如所附屏幕截图所示 Apple 提供版本控制 如何在您的应用程序中显示这些设置 经过进一步的搜索和测试 我自己找到了解决方案 NSDictionary infoDictionary NSBun
  • 检查 NSDictionary 是否为空

    我想检查是否NSDictionary是空的 我正在这样做 mutDictValues NSUserDefaults standardUserDefaults objectForKey dicValues mutableCopy NSLog
  • 为什么我不能将新的视图控制器推送到当前视图上?

    我正在使用以下代码并收到以下错误 编辑 参见this https i stack imgur com k713X png如果您看不懂上图 ChangePasscode 当前被声明为一个类 并且是一个具有 h 和 m 文件以及 nib 文件的
  • 如何在 iOS 上创建图库

    我开始为 iOS 开发一个简单的应用程序 这个应用程序是一些照片的简单画廊 取自网站 我遇到的第一个问题是如何创建图库的视图 The view should be something like this or the Photo App 然
  • iOS 中的自定义阿拉伯字体

    我正在尝试制作一个主要显示阿拉伯语内容的 iPhone 应用程序 我想使用自定义阿拉伯字体来显示该内容 而不是 iPhone 默认的阿拉伯字体 我使用了以下代码 void viewDidLoad super viewDidLoad arab
  • iPhone - UIWebView 多重锁定

    我在调试器控制台中收到以下错误消息 bool WebTryThreadLock bool 0x7400460 Multiple locks on web thread not allowed Please file a bug Crashi
  • 如何将“前往此处的路线”按钮添加到地址簿中?

    谷歌地图应用程序有 到这里的方向 和 从这里出发的方向 例如http static intomobile com wp content uploads 2008 10 iphone 22 os google maps street view
  • iPhone:OpenGL ES:检测您是否点击了屏幕上的对象(立方体)

    我已经问了一个类似的问题 这让我达到了现在的水平 但我真的需要一些帮助 这是我完成一些很酷的事情的最后一件事 在我看来哈哈 我有一个 3D 世界 我可以在其中移动 这个世界里有简单的立方体 使用函数 CGPoint getScreenCoo
  • Objective-C 实现文件中方法名后面的分号

    void designImageViewNow some code here 分号写法正确吗 就在实现文件 Objective C 中方法名称之后 正文括号之前 这行得通吗 当我正在开发 iPhone 应用程序时 我错误地将分号放在了一个自
  • 从视频创建缩略图 - 提高速度性能 - AVAsset - iPhone [重复]

    这个问题在这里已经有答案了 我正在使用基于以下线程中的代码的代码来生成视频缩略图 从 iPhone SDK 中的视频 URL 或数据获取缩略图 https stackoverflow com questions 1347562 gettin
  • 带有子视图的 UIView beginAnimations

    我有一个漂亮且简单的视图 缩放 动画 它以一个点开始并动画到全屏尺寸 UIView beginAnimations nil context NULL UIView setAnimationBeginsFromCurrentState YES
  • NSDictionary 上的 NSPredicate

    我试图根据字母表在表格视图中创建部分 并在这些部分下按字母顺序对我的条目进行排序 我已经收集了 bandArrayIndex 中 bandArray 每个条目的第一个字母 现在我尝试使用 NSPredicate 来计算每个字母有多少个 我正
  • 当应用程序退出活动状态时,MPMovies PlayerViewController 被解雇

    当我将 iPhone 设置为睡眠状态 切换到另一个应用程序等 然后再次返回时 之前的可见内容MPMoviePlayerViewController 提出与presentMoviePlayerViewControllerAnimated 已经

随机推荐