постоянное хранилище для iPhone - PullRequest
1 голос
/ 14 апреля 2009

Мне нужно хранить определенную информацию во время выполнения моего приложения и снова извлекать ее во время запуска приложения. Я пытался сохранить его в XML с помощью GData, но безуспешно. Я использовал NSFileHandle, он не выдает ошибку, но не может создать файл .txt для чтения / записи. Есть ли другой способ хранения и извлечения данных на iPhone. Ниже мой код для NSFileHandle.

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"];
//NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"];
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:@"myFile.txt"];
[fh seekToEndOfFile];
NSData *data = [camName dataUsingEncoding:NSASCIIStringEncoding];
[fh writeData:data];
[fh closeFile];

Для чтения

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myFile.txt"];
//NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"file://localhost/Users/shraddha/Desktop/info.txt"];
NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"myFile.txt"];
if(fh == nil)
    return nil;
else
{
    NSData *data = [fh readDataOfLength:8];
    NSString *retStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    return retStr;
}

Ответы [ 3 ]

10 голосов
/ 14 апреля 2009

Вы пытаетесь записать в каталог ресурсов, что у вас, вероятно, нет разрешения. Попробуйте изменить первую строку кода, чтобы он указывал на каталог документа:

NSArray *savePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSMutableString *savePath = [NSMutableString stringWithString:[savePaths objectAtIndex:0]];
[savePath appendString:@"/myFile.txt"];

Кроме того, вам не нужно беспокоиться о дескрипторах файлов. NSData способен записывать себя на диск:

BOOL result = [data writeToFile:savePath atomically:YES];
4 голосов
/ 14 апреля 2009

Вы можете использовать базу данных sqlite для хранения постоянных данных на iPhone. Вот запись в блоге, которая должна направить вас в правильном направлении:

http://dblog.com.au/iphone-development-tutorials/iphone-sdk-tutorial-reading-data-from-a-sqlite-database/

3 голосов
/ 14 апреля 2009

Каждое приложение для iPhone имеет возможность читать / записывать пары имя / значение, что может быть очень и очень полезно для хранения небольшой информации, такой как пользовательские настройки. Эти настройки также могут быть изменены пользователем вашего приложения (если вы выберете).

Другой вариант, более надежный, чем попытка хранения и извлечения текстовых файлов (мне никогда не нравился этот вариант, особенно с дрянной поддержкой XML-анализа в iPhone), - sqlite. sqlite - это очень легкий движок реляционных баз данных, который входит в комплект поставки каждого iPhone и iPod touch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...