Objective c 询问从文档文件读取NSMutableArray并将其保存到文档文件的新手
在Objective c 询问从文档文件读取NSMutableArray并将其保存到文档文件的新手,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,在viewDidLoad上,我的应用程序填充NSMutableArrayarrayOfHaiku,这是一个由NSDictionary项组成的数组,如下所示: NSError *error; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1 NSString *documentsDirectory = [paths objectAtInde
viewDidLoad
上,我的应用程序填充NSMutableArrayarrayOfHaiku
,这是一个由NSDictionary
项组成的数组,如下所示:
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"haiku.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path])
{
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"haiku" ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath: path error:&error];
}
self.arrayOfHaiku = [[NSMutableArray alloc] initWithContentsOfFile: path];
在使用应用程序时,用户将项目添加到self.arrayOfHaiku
。现在,我在viewDidUnload
中包含以下代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"haiku.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath: path])
{
[self.arrayOfHaiku writeToFile:path atomically:YES];
}
以下是我的问题:
viewDidUnload
a)代码是用新的扩展数组(这是我想要做的)简单地写在文档文件夹中存储数组的文档上(即在viewDidLoad
中访问的数组),还是b)附加新数组,将数组扩展到已经存储在Documents文件夹中的数组,这样我就可以得到一个长度超过两倍的数组,并进行大量重复viewDidUnload
中按我的方式执行,还是b)每次用户向self.arrayOfHaiku添加项目时,在documents文件夹中展开数组更好viewDidUnload
,因为它在某些情况下可能不会启动,例如,如果应用程序是后台的writeToFile:
。您可以使用NSFileHandler的fileHandleForUpdateingAtPath:
函数,但是您必须手动更改plist文件(我认为这不是一个简单的过程)希望这有帮助。非常非常感谢!数据结构非常简单(
self.arrayOfHaiku
是一个由NSDictionary
项组成的数组,其中每个项正好包含两个对象和两个键),而self.arrayOfHaiku不太可能包含超过200或300项,因此我将在几个地方试用它——看看每次使用它需要多少成本,或者把它放在别处会不会有什么不同——但我没有考虑过viewDidUnload
的问题,所以无论如何,我会为它找到一个新家。非常非常感谢你!