Revision: 2615
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 14, 2007 13:35 by tgunr
Initial Code
NSMetadataQuery (null)/(null)/(null) (null) | Permalink NSMetadataQuery seems to have bugs and unable to get NSMetadataQueryResultContentRelevanceAttribute value. Use MDQueryRef instead. #import @interface MyDocument : NSDocument { IBOutlet id field; MDQueryRef _query; } - (IBAction)search:(id)sender; @end --------- #import "MyDocument.h" @implementation MyDocument - (id)init { self = [super init]; if (self) { } return self; } - (NSString *)windowNibName { return @"MyDocument"; } - (void)windowControllerDidLoadNib:(NSWindowController *) aController { [super windowControllerDidLoadNib:aController]; } - (IBAction)search:(id)sender { if( [[field stringValue] isEqualToString:@"" ] ) return; NSString *predicateFormat = @"(kMDItemTextContent == \"?%@*\"c) && (kMDItemContentType != 'com.apple.mail.emlx') && (kMDItemContentType != 'public.vcard')"; _query = MDQueryCreate ( NULL, [NSString stringWithFormat:predicateFormat,[field stringValue]], [NSArray arrayWithObjects:kMDQueryResultContentRelevance, kMDItemPath, kMDItemDisplayName, kMDItemFSName,nil ], [NSArray arrayWithObject:kMDQueryResultContentRelevance] ); MDQuerySetSearchScope ( _query, [NSArray arrayWithObject:kMDQueryScopeComputer ], 0 ); [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finish) name:kMDQueryDidFinishNotification object:_query]; MDQueryExecute ( _query, kMDQuerySynchronous ); } -(void)finish { [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:_query]; MDItemRef miref; CFIndex idx; idx = MDQueryGetResultCount(_query); CFIndex hoge; for( hoge = 0; hoge < idx; hoge++ ) { miref = MDQueryGetResultAtIndex( _query, hoge); NSString* name = (NSString*)MDItemCopyAttribute ( miref, kMDItemFSName ); NSString* path = (NSString*)MDItemCopyAttribute ( miref, kMDItemPath ); NSString* displayname = (NSString*)MDItemCopyAttribute ( miref, kMDItemDisplayName ); NSNumber* score = (NSNumber*)MDQueryGetAttributeValueOfResultAtIndex ( _query, kMDQueryResultContentRelevance, hoge ); if( score != nil ) NSLog(@"score %f",[score floatValue]); } } @end
Initial URL
http://homepage.mac.com/mnishikata/page2/page2.html
Initial Description
Initial Title
NSMetadataQuery
Initial Tags
osx
Initial Language
Objective C