是否可以同时从应用程序包和文档文件夹中读取plist?

时间:2010-02-26 00:54:07

标签: iphone uitableview ios-simulator

有可能吗?从我的本地软件包中读取,同时还从文档文件夹中读取到UItableview中?

谢谢谢谢

yes.simultaneously

3 个答案:

答案 0 :(得分:0)

不 - 因为iPhone不是多核的,你不能“同时”:p

是 - 您可以在同一时间段内打开多个文件。只要文件不同就没有冲突(如果文件相同则取决于其他人如何使用和锁定文件等。)

答案 1 :(得分:0)

在viewDidLoad或类似的事件上,当你要填充你的表数据时,你只需将两个文件聚合在一起......也就是说,你可能正在使用相关文件的内容填充数组或字典。 ..所以使用数组/字典的可变版本,将其初始化为空,然后从您选择的任何位置读取第一个文件,填充到您的可变数组/字典中,然后为下一个文件执行相同操作。完成之后,像往常一样重新加载数据,就好像你已经从一个文件中读取一样。

答案 2 :(得分:0)

就同步而言,技术上没有。但是,可以有两个不同的活动线程,每个线程读取所需文件并解析数据。

关于您要访问的文件...

这是我在一个项目中使用的一种快速而肮脏的方法(我恰好正在进行此项工作):

NSFileManager* fileManager = [NSFileManager defaultManager];
NSError* error;
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
self.documentsDirectory = [paths objectAtIndex:0];
self.blahDBPath = [self.documentsDirectory stringByAppendingPathComponent: @"blah.db"];
NSLog(@"Mainbundle Resourcepath: %@", [[NSBundle mainBundle] resourcePath]);
NSString* defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"blah.db"];
NSLog(@"Default DB Path: %@", defaultDBPath);
success = [fileManager copyItemAtPath:defaultDBPath toPath:self.blahDBPath error:&error];
if (!success) {
    NSAssert1(0, @"blah blah blah '%@'.", [error localizedDescription]);
}

这很丑陋但很有效。当我重构应用程序时,我会重写它。

这里的要点是我向操作系统询问某些目录的路径。然后我根据需要添加文件名或子目录。这允许操作系统管理路径(例如在模拟器中,每个连续构建获得一个新的唯一id作为其路径的一部分),我只是担心应用程序中的最终目录和文件名。 我有路径,我从bundle目录中复制所需的文件并将它们放在某处,在这种情况下是Documents目录。然后我可以随心所欲地做任何事。 如果我只是想访问它们,因为它们在bundle目录中,那么我只是使用[[NSBundle mainBundle] resourcePath]来引用它们。

认为上面代码片段的内容正是您所寻找的。

-isdi -