我正在尝试使用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:]
我很感激任何帮助。 瑞奇。
答案 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”是有效的节点名称。这可能是node
为nil
的原因。