Я использовал этот код для загрузки данных из списка.
-(void)loadOrCreateData {
NSLog(@"Start loadOrCreateData");
NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSLog(@"File Exists.. Loading from plist File");
NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
font = [array objectAtIndex:0];
background = (NSString *)[array objectAtIndex:1];
animation = [array objectAtIndex:5];
[array release];
NSLog(@"Loading Done!");
}
else
{
NSLog(@"File does not exist.. Creating new plist File");
font = @"Georgia-BoldItalic";
background = @"monalisa.jpeg";
animation = @"103";
[self saveData];
}
NSLog(@"Finish loadOrCreateData");
}
- (NSString *)dataFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"data.plist"];
}
- (void)saveData {
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:font];
[array addObject:background];
[array addObject:animation];
[array writeToFile:[self dataFilePath] atomically:YES];
[array release];
}
В первый раз все загружается нормально, когда нет файла plist для получения данных. Но при второй загрузке приложение вылетает, когда я пытаюсь использовать загруженные данные вне метода loadOrCreate
. По какой-то причине данные в шрифте, фоне и анимации недоступны при доступе вне метода loadOrCreate
. Переменные -
шрифт, фон и анимация объявлены как NSStrings в файле .h
и поэтому должны быть доступны глобально, верно? Подскажите, пожалуйста, в чем причина?