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