Проблемы с NSString writeToFile - PullRequest
0 голосов
/ 20 июля 2010

Я использую следующий код, чтобы открыть содержимое файла и сохранить его в другом файле. при запуске исходная длина файла составляет 793, но сохраненный файл равен 0. Я также попытался просто скопировать файл. Кажется, ничего не работает.

Есть ли какие-то разрешения, которые мне не хватает в каталоге документов?

NSError *error;
    NSString *basePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString* nGram = [basePath stringByAppendingPathComponent:@"contacts.gram"];
NSString *oGram = [basePath stringByAppendingPathComponent:@"/../vText.app/model/lm/TAR9230/contacts.gram"];
      NSString *gramString = [[NSString alloc] initWithContentsOfFile:oGram  encoding:NSUTF8StringEncoding error:&error];
      BOOL ok = [gramString writeToFile:nGram atomically:NO encoding:NSUnicodeStringEncoding error:&error];
      if(!ok) NSLog(@"Mayday!");
      NSLog(@"%d",[gramString length]);
      gramString = [[NSString alloc] initWithContentsOfFile:nGram  encoding:NSUTF8StringEncoding error:&error];
      NSLog(@"%d",[gramString length]);

1 Ответ

1 голос
/ 20 июля 2010

Весь этот блок не нужен.Все, что вам нужно:

NSString *fp=[[NSBundle mainBundle] pathForResource:@"contacts" ofType:@"gram"];
NSString *gramString = [[NSString alloc] initWithContentsOfFile:fp  
                                                       encoding:NSUTF8StringEncoding 
                                                          error:&error];

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

В коде, который у вас есть, вы хотите использовать для чтения ту же константу кодирования, что и для записи.Вы пишете с NSUnicodeStringEncoding, но читаете с NSUTF8StringEncoding.Они должны совпадать, но зачем рисковать, если вы знаете точную кодировку?

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