2012-01-31 50 views
0

我正在为LEOPARD(10.5)开发一个小型项目,而且我是一位Objective-C编程的新手。我一直在网上搜索一些教程,但我仍然感到困惑!我需要使用Leopard的聚光灯功能来搜索用户计算机上安装的每个.app文件。我也需要它的名字,路径和图标。所有查询的数据必须保存在文本文件中。我怎样才能做到这一点??? 谢谢!用聚光灯询问

回答

2

定义查询,并观察查询终止。

- (void)searchApplications { 
    NSMetadataQuery *query = [[NSMetadataQuery alloc] init]; 
    query.predicate = [NSPredicate predicateWithFormat:@"kMDItemContentTypeTree == 'com.apple.application'"]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(queryDidFinish:) 
               name:NSMetadataQueryDidFinishGatheringNotification 
               object:query]; 

    [query startQuery]; 
} 

在查询终止函数中,遍历结果并提取所需的数据。

- (void)queryDidFinish:(NSNotification *)notification { 

    NSMetadataQuery *query = (NSMetadataQuery *)[notification object]; 

    [query stopQuery]; 

    NSMutableArray *paths = [NSMutableArray array]; 

    for(NSMetadataItem *mdItem in query.results) { 
     NSString *name = [mdItem valueForAttribute:(NSString *)kMDItemDisplayName]; 
     NSString *path = [mdItem valueForAttribute:(NSString *)kMDItemPath]; 
     NSImage *icon = [[NSWorkspace sharedWorkspace] iconForFile:path]; 

     [paths addObject:path]; 
    } 

    [query release]; 

    [paths writeToFile:@"/tmp/applications.txt" atomically:YES]; 
} 
+0

非常感谢你= D – 2012-03-09 12:20:52