从url加载.plist文件

时间:2012-02-07 19:59:22

标签: objective-c ios xcode url plist

我有以下代码从资源文件夹加载plist文件并使用它来填充tableview:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"AnimeDB" ofType:@"plist"]; 
    NSMutableArray* tmpArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
    self.dataList1 = tmpArray; 
    [tmpArray release];

但我需要从网址加载此.plist文件。 我尝试了一些我在网上找到的解决方案,但我无法让它运行起来。 有人知道我该怎么办?

也许有一个简单的解决方案,但我刚开始使用xcode(这是我的第一个应用程序),所以我找不到它。

非常感谢任何帮助!

P.S。对不起我可能犯的任何错误,我的英语不太好。

2 个答案:

答案 0 :(得分:5)

我建议使用Json。它允许您将类似结构化数据的plist从网址传递到您的应用。

NSData *dataReturn = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://someUrl.com/test.json"]];

    if (dataReturn) {
        NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:dataReturn options:kNilOptions error:Nil];

如果你想使用你的plist,那就是几乎相同的代码:

// This will get the plist into data format
NSData *dataReturn = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://someUrl.com/test.plist"]];

// This will convert data format to array
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:dataReturn]

答案 1 :(得分:1)

最后,我设法使用这段简单的代码完成了我需要的工作:

NSMutableArray *tmpArray = [[NSMutableArray alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://zer0soft.altervista.org/AnimeDB.plist"]];    
self.dataList1 = tmpArray; 

它就像一个魅力!感谢所有花时间回答我的问题的人,特别感谢Jaybit!