Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C[[NSXMLDocument alloc]initWithContentsOfURL:url选项:0错误:&;错误];帮助_Objective C_Xml_Nstableview_Nsxmldocument - Fatal编程技术网

Objective-C[[NSXMLDocument alloc]initWithContentsOfURL:url选项:0错误:&;错误];帮助

Objective-C[[NSXMLDocument alloc]initWithContentsOfURL:url选项:0错误:&;错误];帮助,objective-c,xml,nstableview,nsxmldocument,Objective C,Xml,Nstableview,Nsxmldocument,我需要一点帮助,我有一个搜索字段和按钮触发这个方法,但我得到下面的错误 - (IBAction)fetchTracks:(id)sender { NSString *input = [searchField stringValue]; NSString *searchString = [input stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"searchString: %@", searchS

我需要一点帮助,我有一个搜索字段和按钮触发这个方法,但我得到下面的错误

- (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参数

有人能帮忙吗,谢谢,萨米。

更改此行:

NSError *error;
为此:

NSError *error = nil;
请阅读此问题,了解有关此操作为何有效的更多详细信息:


但是,您似乎根本不关心error对象,因此最好像这样调用这些方法(将
&error
替换为
NULL


您需要在代码中转义空格。例如,像这样

  libraryPath = [libraryPath stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
当我添加此项时,您的代码不会崩溃。
但一般来说,我建议以文件的形式访问文件(例如,
nsstringwithcontentsoffile
)。这会让你的生活更轻松

您可以看到URL不能包含的字符列表:

不安全:

由于多种原因,字符可能不安全。空间 字符不安全,因为有效空格可能会消失并 在转录或删除URL时,可能会引入不重要的空格
排版或接受文字处理程序处理。

我想您可能需要:

NSString *urlString = [@"~/Music/iTunes/iTunes Music Library.xml" stringByExpandingTildeInPath];
NSString* libraryPath = [[NSString alloc] initWithString:urlString];

您也可以发布控制台的输出吗?我将&error更改为NULL,并使用libraryPath=[libraryPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];这似乎已经解决了错误,但现在在控制台中我得到了“doc:(null)”。
NSString *urlString = [@"~/Music/iTunes/iTunes Music Library.xml" stringByExpandingTildeInPath];
NSString* libraryPath = [[NSString alloc] initWithString:urlString];