2012-02-07 61 views
0

一个的.plist文件,我有一个加载从资源文件夹中的plist文件,并用它来填充的tableview下面的代码:加载从URL

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

但我需要从加载该文件的.plist网址。 我尝试了一些我在网上找到的解决方案,但我无法实现它的工作。 有人知道我该怎么做?也许有一个简单的解决方案,但我在Xcode的开始(这是我的第一个应用程序),所以我找不到它。

任何帮助真的很感激!

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

+0

添加您试过的代码 – 2012-02-07 20:20:00

回答

4

我建议看看使用Json。它将允许您将plist结构化的数据从url传递到您的应用程序。

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] 
+0

感谢您的回答,我在网上查找了Json,但我会优先使用plist,因为我已经开发了使用它的完整应用程序,并且plist会变得相当大,复杂的(它像一个数据库,如果你想看看这里的plist是这样的:http://zer0soft.altervista.org/AnimeDB.plist) 顺便说一下,当我不太累,我会尽量使用Json! – 2012-02-07 21:17:04

+0

试试我所做的编辑。应该让你得到并使用plist的数据。 – Jaybit 2012-02-07 21:38:17

+0

一旦我访问我的Mac,我会尝试它(我现在不在家)。 非常感谢! – 2012-02-08 15:57:06

1

最后,我设法做什么,我需要用如此简单的一段代码:

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

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

+0

如果AnimeDB.plist变大,你应该采用不同的方式。我会说在后台下载该文件并将其存储在缓存文件夹中,然后再次从该源读取。 – Demones 2015-12-24 19:34:40