2010-11-04 89 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

相关问题