2009-07-19 72 views
6

在使用Cocoa/Objective-C編寫MacOSX應用程序時,我希望能夠存儲用戶輸入的數據。目前每個安裝只有一個用戶;但是,如果存儲方法在每次安裝時都是多個用戶,我想知道存儲方法如何更改。持久存儲Cocoa/MacOSX

對於每個安裝一個用戶的情況,我應該堅持SQLLite進行持久性存儲,還是有什麼建議?

如果我允許每個安裝有多個用戶,那麼哪個持久性存儲方法會是首選?

回答

7

您可以使用核心數據,併爲每個用戶創建一個持久性存儲(在〜/庫/應用程序數據/我的應用/)

+0

我幾乎總是會開發一個新的應用程序與核心數據,除非我可以拿出一個很好的理由不要。想到存儲在雲中的數據,但即使如此,我想我可能會使用核心數據作爲本地緩存。另外,核心數據很快。 – 2009-07-19 13:03:47

+0

如果您在不同用戶之間共享數據,這可能會使事情變得複雜。但總是有基於文檔的核心數據... – 2009-07-19 13:04:43

+0

好的。我該如何做到這一點? – mthama 2014-08-13 23:28:46

1

要保存哪種數據?當然,你仍然可以使用sqlite爲多個用戶存儲數據(例如Firefox這樣做)。

但是,根據您的數據,您可能想將其保存到普通文件/文檔中?看看NSCoding協議和摘要NSCoder類。或者查看文檔體系結構(NSDocumentController,NSDocumentNSWindowController)。

1

只會有每個安裝的那一刻一個用戶;但是,如果存儲方法在每次安裝時都是多個用戶,我想知道存儲方法如何更改。

只要您僅在默認情況下將數據保存在用戶的主目錄中,格式無關緊要。您的選項包括屬性列表,核心數據(更多的架構決定 - 您要麼將您的應用程序基於核心數據,要麼不使用它),SQLite,NSKeyedArchiver和您自己的自定義格式。

2

您也可以考慮使用NSDictionary作爲內部存儲機制,然後使用[NSDictionary writeToFile:atomically:]將它們寫出到屬性列表文件。我的一位朋友喜歡把字典稱爲上帝的數據結構(臉頰上的舌頭)。

如果您的數據大小適中,有幾個好處:人類可讀,人類可寫,可改變。

0

我會開始將數據存儲到雲端而不是本地存儲。現在iPad已經問世了,如果你的應用程序在iPhone和iPad上使用,該怎麼辦?如果您將數據存儲在雲上,iPhone應用程序和iPad都可以使用相同的數據。如果你在本地存儲,顯然,iphone應用程序和ipad應用程序不能使用相同的數據。