Pergunta

Eu estou fazendo um aplicativo para iPhone onde eu quero salvar o estado do aplicativo. Isto inclui uma propriedade int que estou persistindo em um arquivo no seu próprio. Eu tenho escrito e de trabalho, mas sei que a maneira que eu fiz foi um pouco hacky, converter o int para uma String e depois NSData. Alguém pode sugerir uma maneira melhor?

int someInt = 1;
NSString *aString = [NSString stringWithFormat:@"%d",someInt];
NSData *someData = [aString dataUsingEncoding:NSUTF8StringEncoding];
[someData writeToFile:[documentsDirectory stringByAppendingString:@"someFile"] atomically:YES];

E, em seguida, lê-lo a partir do disco e colocá-lo de volta em um int -

NSData* someData = [NSData dataWithContentsOfFile:[documentsDirectory stringByAppendingString:@"someFile"]];
NSString *aString = [[NSString alloc] initWithData:someData encoding:NSUTF8StringEncoding];
int someInt = [aString intValue];
Foi útil?

Solução

Para escrever:

int i = 1;
NSData *data = [NSData dataWithBytes: &i length: sizeof(i)];
[data writeToFile: [documentsDirectory stringByAppendingString: @"someFile"] atomically: YES]

e voltar a ler:

NSData *data = [NSData dataWithContentsOfFile: [documentsDirectory stringByAppendingString: @"someFile"]];
int i;
[data getBytes: &i length: sizeof(i)];

No entanto, você realmente deve estar usando NSUserDefaults para algo como isto, caso em que você estaria fazendo:

[[NSUserDefaults standardUserDefaults] setInteger: i forKey: @"someKey"]

Para escrever e

int i = [[NSUserDefaults standardUserDefaults] integerForKey: @"someKey"];

para ler.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top