[英]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.