我正在尝试使用 NSScanner 是一个 NSArray 枚举循环。然而这失败了:
-[NSXMLElement 长度]:无法识别的选择器发送到实例 0x280da30
不,我不会length
在任何地方打电话。似乎 found 的值在扫描仪完成之前已更改,因此将其变为空白,从而导致length
错误。
如果我删除循环并对字符串进行硬编码(我不想要那个,这只是一个测试),下面的代码就可以工作。(当然不包括列举)
它也永远不会调用NSLog
s...
这是我的代码:
for (NSString*found in arr)
{
NSLog(@"Found %@",found);
NSString*search = [NSString stringWithString:found];
NSString *separatorString = @"\"";
NSString *container = nil;
NSScanner *aScanner = [NSScanner scannerWithString:search];
[aScanner setScanLocation:0];
[aScanner scanUpToString:@"src=\"" intoString:nil];
[aScanner scanString:@"src=\"" intoString:nil];
[aScanner scanUpToString:separatorString intoString:&container];
NSLog(@"scanned");
NSLog(@"%@",container);
NSImage*previewImage = [[NSImage alloc] initWithContentsOfFile:[relativeDir stringByAppendingPathComponent:container]];
[preview setImage:previewImage];
[previewImage release];
progressed = progressed + 1;
[convertProgress setDoubleValue:[convertProgress doubleValue] + progressed];
}
我怎样才能让它工作?
编辑:
这是输入:
NSXMLDocument*doc = [[NSXMLDocument alloc] initWithData:[NSData dataWithContentsOfFile:webPath] options:NSXMLDocumentTidyHTML error:nil];
NSArray*arr = [doc nodesForXPath:@"//img[@src]" error:nil];