Accessing Camera Volumes
Each volume (SD, compact flash card etc.) mounted on a camera is represented by an instance of the EOSVolume class. The easiest way to retrieve volumes is as follows://camera is an instance of EOSCamera with an open session //get list of volumes NSArray* volumeList = [camera volumes]; //loop though each volume for (EOSVolume* volume in volumeList){ //get volume info EOSVolumeInfo* info = [volume getInfo:nil]; //print volume name NSLog(@"Found volume: %@", [info name]); }The EOSVolumeInfo class contains several properties such as the volume's name, capacity etc.
Accessing Files
Each file (including directories) stored on a volume is represented by an instance of the EOSFile class. The easiest way to retrieve files from a volume is as follows://get files in the root directory NSArray* files = [volume files]; //loop though each file for (EOSFile* file in files){ //get file info EOSFileInfo* info = [file info:nil]; //check whether file is a directory if ([info isDirectory]){ //print directory name NSLog(@"Found directory: %@", [info name]); }else{ //print file name NSLog(@"Found file: %@", [info name]); } }The same method of retrieving files can be applied to an EOSFile directory. The EOSFileInfo class contains properties such as the file's name, size etc.
Downloading a File
Files (that are not directories) can be downloaded to the local filesystem. This can be achieved by using EOSFile's downloadWithOptions:delegate:contextInfo: method.The options parameter should be a dictionary, that may contain the keys: EOSDownloadDirectoryURL, EOSSaveAsFilename and EOSOverwrite. The default values for these keys are: the root directory, the current name of the file and NO respectively.
The delegate parameter should be an object that conforms to EOSDownloadProtocol. This implements a method that is called once the download is complete.
The following example shows an implementation of a method that downloads a file and prints its location when finished.
- (void)downloadFile:(EOSFile*)file{ NSURL* downloadDirectory = [NSURL URLWithString:@"/Users/Bob/Pictures/"]; NSDictionary* options = [NSDictionary dictionaryWithObject:downloadDirectory forKey:EOSDownloadDirectoryURL]; [file downloadWithOptions:options delegate:self contextInfo:nil]; } //EOSDownloadProtocol method - (void)didDownloadFile:(EOSFile*)file withOptions:(NSDictionary*)options contextInfo:(id)contextInfo error:(NSError*)error{ if (error){ NSLog(@"Failed to download file"); }else{ NSURL* downloadDirectory = [options objectForKey:EOSDownloadDirectoryURL]; //the options now contain the key EOSSavedFilename NSString* fileName = [options objectForKey:EOSSavedFilename]; //generate full URL NSURL* fullURL = [NSURL URLWithString:fileName relativeToURL:downloadDirectory]; NSLog(@"Downloaded file: %@", fullURL); } }