[英]How to store NSMutableArray of user defined class objects to file system in iphone?
谁能告诉我如何将自定义类对象的NSMutableArray写入文件? 下面是我用来将数组“ medicationsArray”写入文件的代码。 medicinesArray包含下方的drugDataData类的对象
@interface drugData:NSObject {NSString * drName; NSString *日期; NSString *说明; } @结束
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentDir = [path objectAtIndex:0];
NSString *pathWithFileName;
NSString *pathWithFileName = [NSString stringWithFormat:@"%@/medicationsArray",documentDir];
[medicationsArray writeToFile:pathWithFileName atomically:NO];
通过使用此代码,我无法创建文件。 谁能帮助我,在此先感谢
代替“手动”构造pathWithFileName,应使用stringByAppendingPathComponent:方法代替:
NSString *pathWithFileName = [documentDir stringByAppendingPathComponent:@"medicationsArray"];
这将照顾路径中的所有多余斜杠等。 这可能是您的路径错误的原因。 我认为您的代码段中的pathWithFileName
额外声明只是一个错字。
谢谢克劳斯的答复,现在我能够存储数据,我正在使用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];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.