我最近需要做類似的事情。
我的項目團隊的一些成員想要將我們的應用原型展示給潛在客戶,但希望向每個客戶展示不同的數據。我們通過讓我們的項目團隊成員在與客戶見面之前創建自己的測試數據來解決這個問題。
我通過創建示例.csv文件並將其分發給項目團隊中的其他人來實現此目的。他們用他們自己的測試數據填充它並使用iTunes文件共享將.csv測試數據文件放到設備上。
加載時,應用程序掃描其Documents目錄中的測試數據文件。如果存在,它將解析.csv文件並保留到數據庫。
對於CSV解析,我用大衛德隆的CHCSVParser:https://github.com/davedelong/CHCSVParser
的大量幫助,可以用設置iTunes的文件共享爲您的應用程序。如果您需要Google快速查找本教程(http://www.raywenderlich.com/1948/how-integrate-itunes-file-sharing-with-your-ios-app)應該會幫助您。
編輯 - 添加在存儲核心數據
你在你的,你存儲一個NSNumber和NSDate的原帖說,從數據的.csv幫助。以此爲起點,你可能會有一個。以下表格CSV文件:
+----------------+--------------+
+ NSNumberColumn | NSDateColumn |
+----------------+--------------+
+ 1 | 2013-05-15 |
+ 2 | 2013-06-15 |
+ 3 | 2013-07-15 |
+----------------+--------------+
假設從CSV解析器的輸出是NSArrays的一個NSArray,可以按如下創建核心數據對象:
我會創建一對夫婦宏爲的列數:
#define NSNumberColumn 0
#define NSDateColumn 1
然後在.csv文件中的行迭代:
NSArray *rows = [NSArray arrayWithContentsOfCSVFile:pathToFile]; //CHCSVParser specific parsing method
for (NSArray *row in rows)
{
NSString *numberString = [parsedCsvRow objectAtIndex:NSNumberColumn];
NSString *dateString = [parsedCsvRow objectAtIndex:NSDateColumn];
NSNumber *number = // parse numberString to an NSNumber. Plenty of other posts on achieving this.
NSDate *date = // parse NSDate from dateString. Plenty of other posts on achieving this.
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *myCoreDataObject = [NSEntityDescription insertNewObjectForEntityForName:@"MyCoreDataObject" inManagedObjectContext:context];
[myCoreDataObject setValue:number forKey:@"NSNumberColumn"];
[myCoreDataObject setValue:date forKey:@"NSDateColumn"];
NSError *error;
if (![context save:&error]) {
NSLog(@"%@", [error localizedDescription]);
}
}
注:爲簡潔起見,輸入驗證和空值檢查已被忽略。我也冒昧組成你的NSManagedObject屬性名稱,這將需要更新。上面的代碼應該分成更合適的類結構。
我現在不在Mac上,所以很遺憾我無法檢查這是否正常工作。
希望有所幫助。
您打算如何將CSV文件放到設備上並放到應用可以看到的地方? –
我在想也許會用itunes取得它 –