2011-12-25 83 views
0

我正在開發一個測驗應用程序。我有100個問題。例如,哪個城市是英國的首都?哪個是存儲數據(coredata或sql)的最佳解決方案?

A.羅馬

B.米蘭

C.倫敦

D.奧斯陸

這是存儲數據(coredata或SQL)的最佳解決方案?

+0

嘗試都和比較。 – 2011-12-25 18:48:57

+0

可能重複:http://stackoverflow.com/questions/523482/core-data-vs-sqlite-3 – 0x8badf00d 2011-12-25 18:49:50

+0

這有點重複的,但是我認爲它證明一個單獨的問題,因爲這是一個特定的用例,其中因爲你提供的鏈接更一般。 – 2011-12-25 18:51:48

回答

3

核心數據是一個比較複雜的設置比SQL,但是在我看來,核心數據是很容易的工作,並讓你在「Objective-C的土地」,其中作爲SQL需要編寫噸的SQL語句(我所知道的)。

具體到您的使用情況,我想CoreData將是一個更好的選擇。您可能會有一個Question對象,其中包含實際問題的NSString文本屬性,然後是Answer對象的NSArray。在CoreData/SQL中,你會得到一個帶有文本列的問題表。每個Question與一個Answer對象表有一對多的關係(CoreData處理關係的骯髒工作,但在SQL中你會使用主鍵)。

正如我在下面另一個答案評論說,因爲你的數據庫是不是非常龐大而複雜的最初,你可以打包的plist或從服務器上下載一個最初填充CoreData數據庫。使用CoreData而不是plist意味着動態更新值變得更容易,因此,如果用戶選擇該答案,您可以在每個答案對象上設置一個屬性,以便在啓動之間保存狀態。

退房Core Data vs SQLite 3和談論的幾種不同方法的利弊許多其他堆棧溢出的答案。

0

你也可以考慮在一個數組中使用.plist文件。你的數據並不複雜(根據我的理解),plist可以通過http輕鬆進行外部維護/讀取和更新。

+1

是的,然而,plist令人討厭的是靜態的(是的......從技術上講,你可以讀/寫但是...),然後海報將無法輕鬆記錄用戶爲每個問題選擇了哪個答案。然而,我會建議海報最初用plist填充CoreData數據庫,海報可以從服務器下載。 – 2011-12-25 18:57:08

+0

@傑克勞倫斯,這是很好的解決方案,謝謝。 – Voloda2 2011-12-25 19:06:04

1

對於只有100個條目的簡單問題/答案數據庫,我會使用純文本文件。

創建,編輯和閱讀很簡單。如果您想要Android或其他版本的應用程序,那麼它就是跨平臺的。

你可以使用XML,JSON或plist中(如上所述),但何必呢?只是在問題和答案之間切換。使用[NSString stringWithContentsOfFile]讀入文件,並使用[myFileContentString componentsSeparatedByString:@「\ n」]將行分割成數組。

NSError *error = nil; 
NSArray *testArray = [[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error] componentsSeparatedByString:@"\n"]; 

這是1-2行代碼,沒有學習曲線。數組中的奇數條目將成爲問題,偶數條目將成爲答案。

(讀一plist中只需要一行代碼,這是很好的,但他們很難通過手工編輯,並不能簡單地在其他平臺上閱讀,你應該永遠分支出來)

+0

我完全同意。 100 Q的CoreData是矯枉過正的。 – xCoder 2011-12-26 11:38:09