Ao salvar algo no disco com o NSKEYEDARCHIVER, onde é armazenado no iPhone?
-
20-09-2019 - |
Pergunta
Exemplo: se eu usei isso, onde o iPhone armazena o arquivo?
if (![NSKeyedArchiver archiveRootObject:your_object toFile:@"filename.plist"])
// save failed.
No meu Mac, o nome do arquivo.plist vai para o Macintosh HD diretamente. Sem pasta. Além disso, o NSKEYEDARCHIVER não parece pedir um caminho, apenas para um nome de arquivo. Estranho ou não?
E como esse arquivo está backup com o iTunes?
Solução
ArchiveRootObject: Tofile:
Portanto, você deve passar por um caminho em vez de apenas um nome de arquivo. Por outro lado NSKeyedArchiver
assumirá que você deseja armazená -lo na raiz do disco rígido dos dispositivos.
Para garantir que as coisas sejam apoiadas pelo iTunes, você precisaria salvar seus dados na pasta Documents, como o Diederik Hoogenboom já mostrou você. Dê uma olhada em isto guia.
Outras dicas
Bem, isso depende de onde você pede para salvar o arquivo, no seu caso, você está dizendo para armazenar filename.plist
, que será armazenado em sua raiz /
.
Se você deseja armazená -lo em um local específico, basta dar o caminho completo, algo como o que Diederik Hoogenboom disse a você (isso o armazenará nos documentos dir)
Ou apenas dê o caminho absoluto para o qual deseja salvar o arquivo.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent: @"myFile.plist"];
[NSKeyedArchiver archiveRootObject:your_object toFile:filePath];
Provavelmente isso deveria ter esclarecido um pouco para você.
O local adequado para armazenar os arquivos é a pasta Documents:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];