Проблема с saveToFile - PullRequest
       21

Проблема с saveToFile

0 голосов
/ 29 мая 2010

У меня проблема с NSData writeToFile. Я реализовал код ниже, но у меня есть аномалия. Когда я запускаю свою программу на симуляторе, создается новый файл и информация сохраняется; когда я создаю приложение на моем устройстве, файл не создается. Отладка не дает мне никакой ошибки, но ничего не сохраняет. Вы можете мне помочь? Большое спасибо и извините за мой английский.

-(void)saveXML:(NSString*)name:(float)x:(float)y:(float)z{

    NSMutableData *data = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver setOutputFormat:NSPropertyListXMLFormat_v1_0];
    [archiver encodeFloat:x forKey:@"x"];
    [archiver encodeFloat:y forKey:@"y"];
    [archiver encodeFloat:z forKey:@"z"];
    [archiver encodeObject:name forKey:@"name"];
    [archiver finishEncoding];
    BOOL result = [data writeToFile:@"XML Position" atomically:YES];
    if(result)
        [self   updateTextView:@"success"];
    [archiver release];

}

Ответы [ 2 ]

2 голосов
/ 29 мая 2010

Вы не можете писать в текущий рабочий каталог на iPhone, потому что вы работаете в песочнице. Также вам следует проверить значение result. Если это когда-либо NO, то ваша запись не удалась. Вместо этого вы должны найти каталог документов и записать туда свои файлы:

-(void)saveXML:(NSString*)name:(float)x:(float)y:(float)z{

    NSMutableData *data = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver setOutputFormat:NSPropertyListXMLFormat_v1_0];
    [archiver encodeFloat:x forKey:@"x"];
    [archiver encodeFloat:y forKey:@"y"];
    [archiver encodeFloat:z forKey:@"z"];
    [archiver encodeObject:name forKey:@"name"];
    [archiver finishEncoding];
    NSString* filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"XML Position"];
    BOOL result = [data writeToFile:filePath atomically:YES];
    if(result)
        [self   updateTextView:@"success"];
    [archiver release];

}
0 голосов
/ 29 мая 2010

просто используйте NSSearchPathForDirectoriesInDomains и запишите свой файл по пути, возвращенному этим. Вам не нужно беспокоиться об устройстве или симуляторе.

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