2010-05-29 1 views
0

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

-(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

Вы не можете писать текущую рабочую директорию в 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

Полностью согласен. Это то, что нужно zp26. – Jim

+0

и где я храню его в своем iphone? – zp26

0

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

+0

Я могу попробовать их, но я не могу найти файл. Не находите в моем компьютере и в моем iPhone. – zp26

+0

использование NSLog (@ "zp26% @", filePath); сразу после строки NSString * filePath = ....... вы можете увидеть путь к файлу на вашем ПК – Anurag

+0

Я думаю, zp26, теперь вы бы успешно нашли файл на своем ПК ??? Самый лучший – Anurag

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