如何将用户定义的类对象的NSMutableArray存储到iphone中的文件系统?

时间:2010-06-12 09:00:06

标签: iphone nsuserdefaults

任何人都可以告诉我如何将自定义类对象的NSMutableArray写入文件? 下面是我用来将我的数组“medicationsArray”写入文件的代码。 medicationsArray包含以下药物数据类

的对象

@interface medicationData:NSObject {     NSString * drName;     NSString *日期;     NSString *描述; } @end

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentDir = [path objectAtIndex:0];
NSString *pathWithFileName;

NSString *pathWithFileName = [NSString stringWithFormat:@"%@/medicationsArray",documentDir];
[medicationsArray writeToFile:pathWithFileName atomically:NO];

使用此代码我无法创建文件。 任何人都可以帮助我,提前谢谢

2 个答案:

答案 0 :(得分:2)

不要手动构造pathWithFileName,而应使用stringByAppendingPathComponent:方法:

NSString *pathWithFileName = [documentDir stringByAppendingPathComponent:@"medicationsArray"];

这将处理路径中的任何额外斜杠等。这可能是您的路径可能出错的原因。我认为你的片段中pathWithFileName的额外声明只是一个错字。

答案 1 :(得分:0)

感谢克劳斯的回复, 现在我能够存储数据,我正在使用NSArchiver和NSUnArchiver。 下面是代码,请找。

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentDir = [path objectAtIndex:0];
NSString *pathWithFileName;

pathWithFileName = [NSString stringWithFormat:@"%@/medicationsArray",documentDir];
NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:appDelegate.medicationsArray];
[savedData writeToFile:pathWithFileName atomically:YES];

提取数据

if([[NSFileManager defaultManager] fileExistsAtPath:pathWithFileName])
{
    NSData *savedData = [[NSData dataWithContentsOfFile:pathWithFileName] retain];
    appDelegate.medicationsArray = [[NSKeyedUnarchiver unarchiveObjectWithData:savedData] retain];
    [objMedicationDetailsTVController.tableView reloadData];
}