gpt4 book ai didi

objective-c - NSScanner 和数组循环

转载 作者:行者123 更新时间:2023-12-03 17:30:47 24 4
gpt4 key购买 nike

我尝试使用 NSScanner 是一个 NSArray 枚举循环。然而这失败了:

-[NSXMLElement length]: unrecognized selector sent to instance 0x280da30

不,我不会在任何地方调用length。看起来 find 的值在扫描器完成之前发生了变化,因此将其设为空白,从而导致 length 错误。

如果我删除循环并对字符串进行硬编码(我不希望这样,这只是一个测试),下面的代码就可以工作。 (当然不包括枚举)

它永远不会调用 NSLog ......

这是我的代码:

    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];

最佳答案

来自文档:

The nodesForXPath:error: method returns an array of NSXMLNode objects

您的数组未充满字符串。它充满了各种 NSXML* 对象。他们不是垃圾。这正是它应该如何工作的。

您可能没有调用 length,但 stringWithString: 可能正在调用 length 来计算在新字符串中分配多少空间.

<小时/>

转换为字符串可能意味着很多事情。一个XML节点可能是一个独立的标签,也可能是一些内联的CDATA,也可能是具有各种属性的标签。同样,XML 文档是高度结构化的。在不应用一定结构含义的情况下,将文档内容作为标签/内容的直接枚举来浏览是没有意义的。

您可能需要递归或以其他方式遍历标签并适本地解释其内容。

第一步是删除除初始 NSLog() 之外的所有内容,然后看看您得到了什么。然后弄清楚如何遍历节点树。然后找出如何正确解析它们。

关于objective-c - NSScanner 和数组循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com