2013-10-08 1 views
-3

У меня есть приложение как в C#, так и Objective-C, которое должно читать из текстового файла. Поскольку текстовый файл создается после приложения, у пользователя есть возможность сохранить его в любом месте. В C# нетрудно найти файл, используя имя файла без полного пути. В Objective-C это кажется трудным. Я не могу попросить пользователей сохранить его на определенном пути, это касается регулирования Apple App. Любая идея, как искать конкретный файл только с именем файла? Во время моего судебного разбирательства я использовал NSFileManager для обнаружения файла, и приложение может читать файл, если он сохраняется в приложениях (Mac), но если я сохраню файл в документах или где-нибудь еще, то мне будет Error: «Файл не существует ».чтение из файла: файл не существует

+1

Это поможет, если вы сократите его до наименьшего количества кода, иллюстрирующего вашу проблему, и поделитесь своим кодом. Трудно для других угадать, что вы можете делать неправильно :) – bryanmac

+0

Вы обновили свои «возможности» для своего приложения, чтобы разрешить «Доступ к файлам -> выбранный пользователем файл»? Затем вы можете разрешить пользователю выбирать файл, и это даст вашим разрешениям приложения открыть его. –

+0

@ bryanmac, Как я уже сказал, приложение может читать, когда текстовый файл сохраняется в /Applications/myfile.txt, но не смог найти файл, когда вы меняете разрешение: say /Documents/myfile.txt. – Jon

ответ

0

Вы можете сохранить txt-файл в папке своего приложения. Вы можете создать каталог.

Вот несколько кодов для создания каталога в каталоге Documents.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSFileManager *flmngr = [NSFileManager defaultManager]; 
BOOL isDir; 
if (![flmngr fileExistsAtPath:[NSString stringWithFormat:@"%@/yourDicretoryName", documentsDirectory] isDirectory:&isDir]) { 

    [flmngr createDirectoryAtPath:[NSString stringWithFormat:@"%@/yourDicretoryName", documentsDirectory] 
     withIntermediateDirectories:NO 
         attributes:nil 
          error:nil]; 
} 

после создания конкретной справочника. Вы можете сохранить txt-файл. Предположим, у вас есть один nsstring

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [NSString stringWithFormat:@"%@/txtFile.txt",documentsDirectory]; 
[yourString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil]; 

После сохранения вашего txt-файла вы можете прочитать это.

NSString *stringTxt = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 

Вы можете получить список файлов в каталоге с помощью кода

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSError *error; 
NSMutableArray *fileList = [[NSMutableArray alloc]initWithArray:[[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSString stringWithFormat:@"%@/yourDirectory", documentsDirectory] error:&error]]; 

-contentsOfDirectoryAtPath 

возвращает NSArray объекта. с именами файлов в каталоге.

Для использования в Cocoa Thouch Mac.

Вы можете создать каталог с помощью кода:

NSFileManager *fileManager= [NSFileManager defaultManager]; 
if(![fileManager fileExistsAtPath:directory isDirectory:&isDir]) 
if(![fileManager createDirectoryAtPath:directory withIntermediateDirectories:YES attributes:nil error:NULL]) 
    NSLog(@"Error: Create folder failed %@", directory); 

Вы можете выбрать директорию с помощью кода:

NSOpenPanel* panel = [NSOpenPanel openPanel]; 
    [panel setCanSelectHiddenExtension:NO]; 
    [panel setCanChooseDirectories:YES]; 
    [panel setCanChooseFiles:NO]; 
    [panel setTitle:@"Kaydetmek için Dosya Yolunu Seçin!"]; 
    [panel beginWithCompletionHandler:^(NSInteger result){ 
     if (result == NSFileHandlingPanelOKButton) { 
      directoryPath = [[[panel URLs] objectAtIndex:0]path]; 
      directoryPath = [directoryPath stringByReplacingOccurrencesOfString:@"file://localhost" withString:@""]; 
     } 
    }]; 

Запись файл по-прежнему то же самое. Но вы можете сохранить свой рабочий документ в выбранном или созданном каталоге и т. Д.

Получение списка файлов одинаково.

+0

Привет, Mialkan, спасибо. Пользователи сохраняют текстовый файл вручную, поэтому я попытаюсь работать с частью сохранения текстового файла из вашего кода, но попрошу пользователей сохранить файл в этом каталоге, надеясь, что яблоко не будет считать его диктующим пользователю сохранять файл в определенном пути. – Jon

+0

Добро пожаловать. Я сделал приложение, подобное этому, но его жалование для обзора. Мое приложение загружает файл в формате pdf. Прежде чем dowanload запрашивает имя файла. с именем файла, данным пользователем. Я сохраняю его в папке «Документы/Загрузка». Когда мое приложение будет готово к продаже, я дам вам знать. Вы можете скачать это приложение через эту ссылку [MyApp] (http://mialkan.com/kodlar/myApps/homersapien.html) – mialkan

Смежные вопросы