Я создаю plist, чтобы сохранить некоторые значения, однако во время тестирования я отметил, что сохраняю свой вновь созданный plist после закрытия приложения. & удален из многозадачности. Однако я теряю свои ценности внутри этого plist, если приложение удалено из многозадачности, но не если приложение закрыто ...Сохраняя plist, но теряя значения plist
Это метод данных сохранения, который у меня есть в моем классе контроллера plist, который управляет всем чтением/записью/сохранить и т.д.
- (void) saveData:(NSString *)methodName signature:(NSString *)pSignature Version:(NSNumber *)pVersion request:(NSNumber *)rNumber dataVersion:(NSNumber *)dvReturned cacheValue:(NSNumber *)cValue;
{
// get paths from root direcory
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
// get documents path
NSString *documentsPath = [paths objectAtIndex:0];
// get the path to our Data/plist file
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"EngineProperties.plist"];
// set the variables to the values in the text fields
self.signature = pSignature;
self.version = pVersion;
self.request = rNumber;
self.dataVersion = dvReturned;
//do some if statment stuff here to put the cache in the right place or what have you.
if (methodName == @"manu")
{
self.man = cValue;
}
else if (methodName == @"models")
{
self.mod = cValue;
}
else if (methodName == @"subMod")
{
self.sub = cValue;
}
self.cacheValue = [NSDictionary dictionaryWithObjectsAndKeys:
man, @"Manu",
mod, @"Models",
sub, @"SubModels", nil];
NSDictionary *plistDict = [NSDictionary dictionaryWithObjectsAndKeys:
signature, @"Signature",
version, @"Version",
request, @"Request",
dataVersion, @"Data Version",
cacheValue, @"Cache Value", nil];
NSString *error = nil;
// create NSData from dictionary
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
// check is plistData exists
if(plistData)
{
// write plistData to our Data.plist file
[plistData writeToFile:plistPath atomically:YES];
NSString *myString = [[NSString alloc] initWithData:plistData encoding:NSUTF8StringEncoding];
// NSLog(@"%@", myString);
}
else
{
NSLog(@"Error in saveData: %@", error);
// [error release];
}
}
@end
Мой вопрос состоит из двух частей .. Могу ли я сохранить значения, поэтому они сохраняются в PLIST, даже если приложение удаляется из бара multitaksing. Что мне нужно изменить, чтобы заставить это работать, если оно может работать?
Возможно, это не проблема, но вы можете просто вызвать writeToFile: в своем словаре, и он будет выводиться как plist. –
Вы сохраняете имя файла 'EngineProperties.plist', но ваш комментарий считает, что он сохраняет' Data.plist'. Какое имя файла вы загружаете? Кроме того, когда вы сохраняете файл, запишите 'plistPath'. Если вы запустите приложение в симуляторе, вы можете перейти на путь в поисковом устройстве и посмотреть, какие файлы были созданы, и открыть их в XCode, чтобы просмотреть их содержимое. – Dondragmer
Комментарий opps был неправильным .. Я обновил его с более описательным именем. Один вопрос, однако, где путь в искателе? Я не слышал об этом раньше? –