使用ODQuery搜索目录时出错

时间:2010-02-27 10:44:01

标签: cocoa ldap

我正在尝试使用ODQuery方法搜索LDAP数据库。我有以下代码设置:

- (void)awakeFromNib
{
[self startSearch:@"john"];
}

- (void)startSearch:(NSString *)searchString
{
nodeName = @"http://sububria.org.au";
session = [ODSession defaultSession];
searchNode = [[ODNode alloc] init];
searchNode = [ODNode nodeWithSession:session name:nodeName error:NULL]; 

query = [[ODQuery alloc] initWithNode:searchNode
                       forRecordTypes:kODRecordTypePeople
                            attribute:kODAttributeTypeAllAttributes
                            matchType:kODMatchInsensitiveContains
                          queryValues:searchString
                     returnAttributes:kODAttributeTypeAllAttributes
                       maximumResults:0
                                error:NULL];

[query setDelegate:self];
[query scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}

- (void)query:(ODQuery *)inSearch foundResults:(NSArray *)inResults error:(NSError *)inError
{ 
NSLog (@"Search ran");
NSLog (@"%@", inResults);
}

我对此很新,所以我不确定我做错了什么。我在Xcode中没有收到任何警告或错误,我的应用程序只是在运行搜索查询时崩溃。

没有出现控制台错误,但线程堆栈中的最新项目是;

CFRetain
_ODQueryInitWIthNode
-[ODQuery initWithNode:forRecordTypes:attribute:matchType:queryValues:returnAttributes:maximumResults:error:]
-[MyAppDelegate startSearch:]
-[MyAppDelegate applicationDidFinishLaunching:]

我很感激任何帮助。 瑞奇。

1 个答案:

答案 0 :(得分:1)

您所做的就是创建一个查询;你还没有真正开始搜索。

要同步搜索,ask the query for all the results at once。如果您传递NO(意味着返回所有结果),则可能需要一段时间。

要异步搜索并在有更多结果的情况下获得通知,be the query's delegate然后schedule the query on a run loop

编辑另外,我怀疑“http://server.org”是有效的节点名称。这可能是nodenil的原因。