Сохранение данных:Преобразование NSNumbers, сохраненные в PLIST для целых
- (NSString *)dataFilePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:kFilename];
}
- (void)applicationWillTerminate:(NSNotification *)notification
{
NSMutableArray *array = [[NSMutableArray alloc] init];
NSNumber *number = [NSNumber numberWithInt:points];
[array addObject:number];
[array writeToFile:[self dataFilePath] atomically:YES];
[array release];
}
Чтение данных: BestLabel.text покажет высокий балл. Я получаю предупреждение: «назначение делает целое число от указателя без приведения»
-(void)LoadData{
BestLabel.center = CGPointMake(150,300);
NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
loadint = [array objectAtIndex:0];
NSString *myString35 = [NSString stringWithFormat:@"%d", loadint];
BestLabel.text = myString35;
[array release];
}
}
В примере кода я получил от этого было сохранение и загрузка текстовых полей без проблем .. Я предполагаю, что я мог бы сделать строку Int преобразования , но это кажется ненужным. Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ:
- (void)applicationWillTerminate:(NSNotification *)notification
{ NSMutableArray * массив = [[NSMutableArray Alloc] инициализации];
if (points > highscore){
NSString *myString35 = [NSString stringWithFormat:@"%d", points];
[array addObject:myString35];
}else {
NSString *myString35 = [NSString stringWithFormat:@"%d", highscore];
[array addObject:myString35];
}
NSNumber *number = [NSNumber numberWithInt:GreenBlot.center.x];
[array addObject:number];
NSNumber *number2 = [NSNumber numberWithInt:GreenBlot.center.y];
[array addObject:number2];
А теперь загружается с:
NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
BestLabel.text = [array objectAtIndex:0];
highscore = [[array objectAtIndex:0] intValue];
lx = [[array objectAtIndex:1] intValue];
ly = [[array objectAtIndex:2] intValue];
GreenBlot.center = CGPointMake(lx,ly);
[array release];
}
лк и Ly являются целыми числами. Я сначала попробовал CGPointMake ([[array objectAtIndex: 1] intValue], [[array objectAtIndex: 2] intValue]). Те же результаты, GreenBlot центрируется на 0,0. Любая идея почему?
Является ли loadint int или NSNumber? – mahboudz