【问题标题】:Not getting NSMetaDataQuery update Notification没有收到 NSMetaDataQuery 更新通知
【发布时间】:2019-03-20 10:30:09
【问题描述】:

我有以下代码:

// Main thread
NotificationCenter.default.addObserver( self,
    selector:#selector(queryDidFinish),
    name:NSNotification.Name.NSMetadataQueryDidFinishGathering, object:nil)

NotificationCenter.default.addObserver( self,
    selector:#selector(queryDidUpdate),
    name:NSNotification.Name.NSMetadataQueryDidUpdate, object:nil)

还有:

private var query = NSMetadataQuery() // Class level

func queryCloud()
{
    // Called on main thread
    query.searchScopes = [NSMetadataQueryUbiquitousDocumentsScope]
    query.predicate = NSPredicate(format: "(%K like '*.jpg')",
                                    NSMetadataItemFSNameKey) 
    queryHot.start()
}

@objc func queryDidFinish(notification: NSNotification)
{
    print("This gets called once on main thread")
    print("and the query can be read")
}

@objc func queryDidUpdate(notification: NSNotification)
{
    print("This does not get called")
}

所以,上面的“曾经工作”,跨两个设备。现在,两个设备都没有得到 queryDidUpdate() 调用。我试过删除应用程序,打开和关闭云权限,登录和退出 iCloud,重新启动设备。两个设备都可以读取它们的“冻结”云,但不会传播任何数据,也不会传递实时阶段通知。几天来,我确实在两台设备之间进行了一些繁重的测试(传输数百 MB 的图片)。而现在,一切都停止了。

每个设备的云令牌完全不同,但都是稳定的。 使用 UIDocument 存储到云端。

我错过了什么吗?我需要在 iCloud 中重置什么吗?有没有我可以在某处查看的状态?

我不想更改应用程序包 ID 来摆脱困境……我想找出根本问题。 感谢您的任何提示!

【问题讨论】:

    标签: ios swift xcode nsmetadataquery icloud-documents


    【解决方案1】:

    代码正常,但设备上的 iCloud 处于状态。最终,我关闭并打开了“iCloud Drive”(这与登录 iCloud 不同)。放回应用程序的设置后,一切都开始工作了。

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 2012-01-08
      • 1970-01-01
      • 2018-02-12
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      相关资源
      最近更新 更多