arrayWithContentsOfURL的正确用法是什么?

时间:2009-12-08 19:16:47

标签: iphone objective-c

这有点基础;我正在尝试检索iPhone应用程序的http数据。

我有www.myhost.com/test.html,内容为

<array><string>test</string><string>test2</string></array>

然后我

NSURL *baseURL = [NSURLRLWithString:@"http://www.myhost.com/test.html"];
NSArray *array = [NSArray arrayWithContentsOfURL:baseURL];
NSLog(@"%@", [array description]);

继续返回(null)。我错过了什么?谢谢!

3 个答案:

答案 0 :(得分:5)

它应该是一个完整的plist格式(带有doctype和所有这些)

The man page

创建合适的plist的最简单方法是使用“Property List Editor.app”

侧注:NSLog(@"%@", [array description]);NSLog(@"%@", array);

相同

答案 1 :(得分:5)

arrayWithContentsOfURL documentation明确指出

  

数组表示   由aURL标识的位置必须   仅包含属性列表对象   (NSString,NSData,NSArray或   NSDictionary对象)。

即,通过调用writeToURL:atomically方法获得的对象类型。此方法编写的位置可用于使用类方法arrayWithContentsOfURL:或实例方法initWithContentsOfURL:初始化新数组。因此,我建议使用这些标准方法从URL编写和读取数组,而不是编写自己的文件并尝试通过arrayWithContentsOfURL:读取它。

答案 2 :(得分:0)

我做的另一个发现是,如果你想要动态构建列表,通过网络提供而不是来自你使用plist编辑器创建的静态文件,你必须转义字符串。如果文档中有任何xml错误,则无法加载数组。例如,我有一个&amp;在我的一些字符串中,并且仍然得到一个空数组,直到我转义字符串并替换&amp;与&amp;