2012-01-31 4 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 –