2010-01-04 4 views
0
(void) loadDataFromDisk 
{ 
    NSMutableData *data = [[NSMutableData alloc] initWithContentsOfFile:[self pathToDataFile]]; 
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 


    _cells = [[unarchiver decodeObjectForKey:@"Board"] retain]; 

    [unarchiver release]; 
    [data release]; 
} 

(void) saveDataToDisk 
{ 
    NSMutableData *data = [NSMutableData alloc]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver encodeObject:_cells forKey:@"Board"]; 

    [archiver finishEncoding]; 

    [data writeToFile:[self pathToDataFile] atomically:YES]; 

    //[array release]; 
    [data release]; 
    //NSMutableData 
} 

(BOOL)gameDataExists 
{ 
    return [[NSFileManager defaultManager] fileExistsAtPath:[self pathToDataFile]]; 
} 

(NSString *)pathToDataFile 
{ 
    NSString *path = [[NSBundle mainBundle] bundlePath]; 
    return [path stringByAppendingPathComponent: GAME_DAT]; 
} 

код выше работал на тренажере, но не на device.it кажется, что файл не может быть найден после выхода я и перезагрузить мое приложение , И если я реализовать pathToDataFile так:Почему сохранить и файл кода нагрузки работает на iPhone симулятор, но не на устройстве

(NSString *)pathToDataFile 
{ 
    NSArray * path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 
    NSString *docDir = [path objectAtIndex:0]; 
    return [docDir stringByAppendingPathComponent:GAME_DAT]; 
} 

файл сохранить и перезагрузить работал на устройстве, но метод DrawRect я реализован на мой взгляд, нельзя назвать после того, как я назвал [само setNeedsDisplay].

Крисом Может

ответ

1

Путь расслоения только для чтения на устройстве, но читать-писать на эмуляторе. Поэтому на устройстве любые попытки написать там будут терпеть неудачу.

Ваш второй подход к использованию каталога документов должен решить проблему.

Я не знаю, почему [self setNeedsDisplay] не работает для вас, но это, вероятно, не связано с этой проблемой.

Существует одна ошибка, я заметил в своем коде:

NSMutableData *data = [NSMutableData alloc]; 

Должно быть:

NSMutableData *data = [[NSMutableData alloc] init]; 

Вы также должны освободить архиватор в конце метода saveDataToDisk.

+0

Спасибо, но моя проблема в том, что если я изменяю функцию pathToDataFile, мое представление не может быть отображено правильно, оно не может работать в функции drawRect, которую я пишу. – cgha

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