簡體   English   中英

如何將用戶定義的類對象的NSMutableArray存儲到iPhone中的文件系統?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM