Objective-C [[NSXMLDocument alloc] initWithContentsOfURL:url options:0 error:& error];帮助

我需要一些帮助,我有一个搜索字段和按钮触发此方法,但我得到下面的错误。
- (IBAction)fetchTracks:(id)sender {

NSString *input = [searchField stringValue];
NSString *searchString = [input stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"searchString: %@", searchString);

NSError *error;
NSString* libraryPath = [[NSString alloc] initWithString:@"~/Music/iTunes/iTunes Music Library.xml"];
NSURL *url = [NSURL URLWithString:libraryPath];

[doc release];
doc = [[NSXMLDocument alloc] initWithContentsOfURL:url options:0 error:&error];

NSLog(@"doc: %@", doc);

[itemNodes release];
itemNodes = [[doc nodesForXPath:@"ItemSearchResponse/Items/Item" error:&error] retain];

[tableView reloadData];
}
* - [NSXMLDocument initWithContentsOfURL:options:error:]:nil参数 任何人都可以帮忙,谢谢,萨米。     
已邀请:
您需要在代码中转义空格。例如,像这样
  libraryPath = [libraryPath stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
当我添加它时,您的代码不会崩溃。 但一般来说,我建议将文件作为文件访问(例如
NSString stringWithContentsOfFile
)。它会让你的生活更轻松。 您可以在此处查看URL不能包含的字符列表: 不安全: 出于多种原因,角色可能不安全。空间    角色是不安全的,因为重要的空间可能会消失    当转录URL时,可能会引入无关紧要的空格    排版或受到文字处理程序的处理。     
改变这一行:
NSError *error;
对此:
NSError *error = nil;
阅读此问题以获取有关其工作原理的更多详细信息:NSError:使用nil检测错误实际上是否会关闭错误报告? 但是,你似乎根本不关心错误对象所以你最好只是调用这样的方法(用
NULL
替换
&error
doc = [[NSXMLDocument alloc] initWithContentsOfURL:url options:0 error:NULL];
...
itemNodes = [[doc nodesForXPath:@"ItemSearchResponse/Items/Item" error:NULL] retain];
    
我想你可能需要:
NSString *urlString = [@"~/Music/iTunes/iTunes Music Library.xml" stringByExpandingTildeInPath];
NSString* libraryPath = [[NSString alloc] initWithString:urlString];
    

要回复问题请先登录注册