Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 为什么Spotlight有时不运行我的查询?_Cocoa_Macos_Macos Carbon_Spotlight - Fatal编程技术网

Cocoa 为什么Spotlight有时不运行我的查询?

Cocoa 为什么Spotlight有时不运行我的查询?,cocoa,macos,macos-carbon,spotlight,Cocoa,Macos,Macos Carbon,Spotlight,我在玩Spotlight API,包括Carbon和Cocoa版本,我似乎每隔一段时间就会遇到同样的问题:查询从不运行,从不发出任何通知。然而,我想强调的是,大多数时候它确实运行,所以发生了一些奇怪的事情 我没有写任何特定的应用程序。这只是一个聚光灯测试工具,因此不会根据用户输入触发查询。相反,它是在我的控制器内的ApplicationIDFinishLaunching:中配置和执行的。最初我试图在awakeFromNib中执行此操作,但在这种情况下,查询从未运行过。(我的理论是RunLoop尚

我在玩Spotlight API,包括Carbon和Cocoa版本,我似乎每隔一段时间就会遇到同样的问题:查询从不运行,从不发出任何通知。然而,我想强调的是,大多数时候它确实运行,所以发生了一些奇怪的事情

我没有写任何特定的应用程序。这只是一个聚光灯测试工具,因此不会根据用户输入触发查询。相反,它是在我的控制器内的
ApplicationIDFinishLaunching:
中配置和执行的。最初我试图在
awakeFromNib
中执行此操作,但在这种情况下,查询从未运行过。(我的理论是RunLoop尚未启动,但我不确定。)

以下是来自
ApplicationIDFinishLaunching:
的碳排放代码:

CFStringRef predicate = CFSTR("kMDItemContentTypeTree == 'public.movie'");
_query = MDQueryCreate(NULL, predicate, NULL, NULL);
_query = (MDQueryRef)CFMakeCollectable(_query);
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(notify:)
                                             name:nil
                                           object:(id)_query];
MDQueryExecute(_query, kMDQueryWantsUpdates);
我是凭记忆写的,所以可能包含了原稿中没有的打字错误。原始代码编译和运行都很好,只是偶尔根本不起作用


有什么好处?也许
applicationdFinishLaunching:
不是聚光灯查询的正确位置。

我在applicationdFinishLaunching中启动聚光灯查询,没有问题,所以我认为这不是您的问题


我有几件事要尝试。不要在addObserver:selector:name:object中向name传递nil,而尝试为name传递NSMetadataQueryIDFinishGatheringNotification,并为name传递NSMetadataQueryIDUpdateNotification进行第二次调用。第一个将在查询第一次运行完成时生成一个结果。第二个将提供更新。(但仅当某些内容发生更改时。)

我在ApplicationIDFinishLaunching中启动了一个聚光灯查询,没有问题,因此我认为这不是您的问题

我有几件事要尝试。不要在addObserver:selector:name:object中向name传递nil,而尝试为name传递NSMetadataQueryIDFinishGatheringNotification,并为name传递NSMetadataQueryIDUpdateNotification进行第二次调用。第一个将在查询第一次运行完成时生成一个结果。第二个将提供更新。(但只有当某些事情发生变化时。)