任何人都可以告诉我如何将自定义类对象的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];
使用此代码我无法创建文件。 任何人都可以帮助我,提前谢谢
答案 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];
}