2011-08-28 64 views
0

我正在爲iPhone製作鬧鐘應用程序,並想知道什麼是保存我的數據的最佳方式。我嘗試過實施CoreData,但它不起作用。我看了一下,發現使用CoreData時,你必須勾選一個複選框,在Xcode中創建一個新項目時使用CoreData作爲存儲空間,我沒有這樣做。相反,我創建了基於視圖的應用程序。我還可以實現CoreData還是應該使用其他類似plist或SQLite的東西。我應該如何保存鬧鐘應用程序數據?

+1

它是一個小數據處理器可以罰款,否則使用CoreData。 – zaph

+0

我只想爲用戶可能創建的每個警報保存一個警報對象,例如fireDate,標籤和重複間隔。你認爲plist能夠解決這個問題嗎? – Souljacker

+0

確定它仍然可以使用核心數據。只需創建一個新項目選中核心數據選項並查看該項目 - 尤其是應用程序委託。你可以複製並粘貼大量的核心數據代碼到你的其他項目中 – HeikoG

回答

3

我會做什麼,只是在NSUserDefaults的數據存儲爲字典的數組。

例如,讓我們說你有:

NSDictionary *alarmOne = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fireDateOne, labelOne, repeatIntervalOne, nil] forKeys:[NSArray arrayWithObjects:@"fireDate", @"label", @"repeatInterval"]]; 
NSDictionary *alarmTwo = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fireDateTwo, labelTwo, repeatIntervalTwo, nil] forKeys:[NSArray arrayWithObjects:@"fireDate", @"label", @"repeatInterval"]]; 
NSArray *alarmsToBeSaved = [NSArray arrayWithObjects:alarmOne, alarmTwo, nil]; 
//save the alarms 
[[NSUserDefaults standardUserDefaults] setObject:alarmsToBeSaved forKey:@"MyAlarms"]; 

//get alarms back from NSUserDefaults 
NSArray *alarms = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyAlarms"]; 
for (NSDictionary *alarm in alarms){ 
    NSLog(@"label of alarm: %@", [alarm objectForKey:@"label"]); //output alarm labels for example! 
} 

你也可以保存該Array對應用程序的文件目錄的磁盤...

核心數據通常是更好的,當你有大集的數據,您希望快速從數據庫中取出(搜索)並更好地控制內存使用情況。

如何添加新的警報?

NSDictionary *alarmThree = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fireDateThree, labelThree, repeatIntervalThree, nil] forKeys:[NSArray arrayWithObjects:@"fireDate", @"label", @"repeatInterval"]]; 

NSMutableArray *newAlarms = [NSMutableArray arrayWithObjects:[[NSUserDefaults standardUserDefaults] objectForKey:@"MyAlarms"]]; 
//add the new alarm Dict 
[newAlarms addObject:alarmThree]; 
//save the array 
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithArray:newAlarms] forKey:@"MyAlarms"]; 
+0

那麼如何保存用戶添加的數據呢? – Souljacker

+1

增加了我如何保存第三個鬧鐘 – Ladislav