views:

152

answers:

3

Is it possible?to read from my local bundle and at the same time also read from documents folder into UItableview?

thanks thanks

yes.simultaneously

A: 

No — as in the iPhone isn't multicore, you can't have "simultaneous" :p

Yes — as in you can open multiple files in the same period of time. There's no conflicts as long as the files are different (if the files are the same then it depends on how others are using and locking the file etc.)

KennyTM
Alrite..what about let's say if i want to copy my plist from bundle to documents folder?because each time when i saved something into the documents folder i keep seeing my plist being "created" in various folder and that's not what i want..i want it static so i can write and read just from that particular documents folder..
summer
@summer how did you copy the plist?
KennyTM
A: 

on viewDidLoad or some similar event when you would be populating your table data, you would simply just aggregate the two files together... that is you are are likely populating an array or dictionary with the contents of the file in question... so use the mutable version of array/dictionary, initialize it empty, then read in the first file from whatever location you choose, populating into your mutable array/dictionary, then do the the same for the next file. after you are done, reloadData as you normally would as if you had read form one file.

A: 

Hi Summer,

As far as simultaneous goes, technically no. However, one could have two different active threads each one reading required files and parsing the data.

Regarding the files you want to access...

Here is a quick and dirty method I use in one project (which I just happen to be working on at the moment):

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]);
}

It is ugly but effective. I'll rewrite it when I refactor the application.

The point here is that I ask the operating system for the path to certain directories. Then I add file names or subdirectories as required. This allows the operating system to manage paths (like in the simulator where each successive build gets a new unique id as part of its path) and I just worry about the final directories and file names in the application. One I have the paths, I copy the required file from the bundle directory and put them somewhere, the Documents directory in this case. Then I can do whatever I need to with them. If I just wanted to access them as they are in the bundle directory, then I I just refer to them by using [[NSBundle mainBundle] resourcePath].

I think something along the lines of the above snippet is what you are looking for.

-isdi-

ISDi