У меня есть следующий блок кода:
NSMutableArray* mergedSymbolsArray = [NSMutableArray array];
for (NSDictionary* aSymbol in localSet) {
NSLog(@"Symbol:%@",[aSymbol valueForKey:@"symbol"]);
[mergedSymbolsArray addObject:aSymbol];
}
[Utils writeObjectToPList:mergedSymbolsArray];
tickers = [Utils getDataFromPList];
Вот мой код для чтения / записи в plist:
+ (void)writeObjectToPList:(id)myData {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mobile-watchlist.plist"];
[myData writeToFile:path atomically:YES];
}
+(NSMutableArray*)getDataFromPList
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mobile-watchlist.plist"];
NSMutableArray* myArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
NSLog(@"READING -- PList Data Count: %d", [myArray count]);
return [[NSMutableArray alloc] initWithContentsOfFile:path];
}
По какой-то причине mergedSymbolsArray
не запишет в список. Я не уверен, почему?
Я могу написать в листе следующее:
[tickers addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"GOOG", @"symbol", @"2044", @"id", nil]];
[tickers addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"AAPL", @"symbol", @"686", @"id", nil]];
[tickers addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"YHOO", @"symbol", @"4177", @"id", nil]];
[Utils writeObjectToPList:tickers];
Почему первый блок кода не записывается в plist?
ДОПОЛНИТЕЛЬНЫЕ ЗАМЕЧАНИЯ:
Вот пример словаря, который содержит mergedSymbolsArray:
{
"charts_count" = 2;
"created_at" = "2010-04-12T16:37:32Z";
exchange = NASDAQ;
"followers_count" = 259;
id = 8404;
industry = "<null>";
"messages_count" = 1436;
ric = "GRPN.O";
sector = "<null>";
symbol = GRPN;
title = Groupon;
"updated_at" = "2011-09-05T04:17:56Z";
}
Я предполагаю, что метод writeToFile: атомарно не работает, потому что не может быть записан?