2010-11-04 87 views
0

我有一個NSMutableArray,這個數組中的每個項目是不同的類。在每個類中都有許多字段,如CPPlot,標識符......(我正在使用CorePlot開發一個股票應用程序)。現在我想存儲這個NSMutableArray在用戶重新打開應用程序時加載,這將加載他們之前使用的所有圖表。保存NSMutableArray加載時重新打開iphone應用程序

我試圖找出如何在Stackoverflow中做到這一點。而且我發現有2個解決方案:

NSUserDefaults的

SQLite數據庫

  1. 在NSUserDefaults的,當我想存儲的NSMutableArray,我必須用的NSKeyedArchiver實現歸檔和解除存檔數組對象,也爲數組對象中的每個項目執行NSCoding協議。但是我不能做這個解決方案,因爲在每個項目中,它都有一些來自CorePlot庫的字段,所以我不能對這些字段使用NSCoding。

  2. SQLite數據庫,我不能使用這個解決方案,因爲數組對象中的每個項目是不同的類。

我想問問是否有其他解決方案來解決這個問題?

我希望我的話足夠清楚明白。

感謝

回答

0

我建議你找出是在您CorePlot對象的根是什麼樣的數據。如果它是整數,那麼只需將它們存儲在NSUserDefaults中,然後在重新打開應用程序時重建您的NSMutableArray。另一種選擇是將您的物品存儲在單獨的plist文件中。

0

使用此方法保存:

- (NSArray *)applicationDataFromFile:(NSString *)fileName { 
    NSArray *paths = NSSearchPathForDirecotiresInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, 
                 YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *appFile = [documentsDirectory 
         stringByAppendingPathComponent:fileName]; 
    NSArray *myData = [NSArray arrayWithContentsOfFile:appFile]; 
    return myData; 
} 

- (BOOL)saveToFileForStringArray:(NSMutableArray *)array 
          toFile:(NSString *)fileName { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, 
                 YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    if (!documentsDirectory) { 
     NSLog(@"Documents directory not found!"); 
     return NO; 
    } 
    NSString *appFile = [documentsDirectory 
         stringByAppendingPathComponent:fileName]; 
    return ([array writeToFile:appFile atomically:YES]); 
} 
+0

您應該使代碼可以被讀取,當然... – Jason 2010-11-04 15:43:25

+0

@Jason是格式化該答案 – 2010-11-06 05:14:08

相關問題