2014-01-15 104 views
1

我有一個應用程序,我希望能夠上傳文件。我可以想象序列化數據,將其放入數組,然後序列化數組並將其放入Core Data中,但這看起來不太合適。我也可以想象將文件複製到應用程序的支持文件中,爲這些文件獲取NSURL並存儲數組或NSURL。如何使用Core Data上傳和存儲Cocoa中的文件?

在任何情況下,NSURL都不是核心數據中的屬性選項,也不是NSArray。

另一個潛在的問題 - 我的目標是讓一個iPhone應用程序和桌面應用程序同步。所以我想從我的iPhone上傳圖片或者從我的桌面上傳文件,並且一切正常。我不確定複製文件是否與iPhone兼容。我希望能夠上傳任何類型的文件。

問題:
如何在iOS上存儲圖像?
如何在Mac OS X上存儲文件?
我是否將二進制數據存儲在覈心數據中?我是否將文件複製到目錄並存儲NSURL?

紅利問題:
如何在iOD和Mac OS X應用程序之間進行同步?

澄清:
對這個問題的任何混淆抱歉。這裏有一個更清晰的版本:

我的核心數據模型由一個名爲NSString屬性和一個與「File」實體的一對多關係的「Entry」實體組成。該文件實體具有名稱NSString屬性和尚未確定的第二個屬性。這第二個屬性可能是(從我能想到的)一些文件的可變形的NSData表示,NSURL的可變形表示指向某個文件(我對變形的工作方式仍然不滿意,所以我可能對所有這些都是錯誤的...)或文件數據的二進制blob。可能還有其他選擇,但重點是能夠將文件從OS X或iOS上保存或「上傳」到該程序,並將這些數據庫同步到一起。

我有一個OS X應用程序和一個表格視圖,顯示所有條目的名稱。選擇一個條目的名稱,你將有一個它指向的文件列表。雙擊該文件,它應該像Finder一樣使用默認應用程序打開。您還應該能夠將文件從Core Data導出並將其保存迴應用程序之外的目錄。

我也有一個iOS應用程序,它允許我拍攝一張或多張照片,將它們保存到「文件」實體,指向來自「Entry」實體的文件(使用與OS X相同的Core Data模型應用程序),並與我的OS X應用程序同步,以便兩個應用程序都具有相同的數據。

我希望能夠解決問題。

感謝您的幫助,

切特

回答

1

我相信你不是核心數據非常熟悉呢。我強烈建議深入研究核心數據文檔。

無論如何,從我的理解,可能實現你的數據模型看起來是這樣的:enter image description here

你的用戶將不得不File對象的NSSet中,每個文件的對象是負責存儲的名稱和它的URL在Application Documents目錄中。

至於你的第二個問題,我不太在那裏看到一個問題。

希望這會有所幫助, 乾杯!

+0

如何將文件的內容存儲爲屬性? – Chet

+0

在iOS上,如果我要將圖像存儲在覈心數據中,我會將NSURL存儲到複製到應用程序中的圖像,還是將數據序列化爲二進制存儲? – Chet

+0

將NSURL存儲到圖像比存儲圖像內容更好。 – Arcanfel

1

核心數據允許您設置外部存儲屬性的選項,然後IT將決定是否將對象存儲在外部文件中。

因此,您將創建一個名爲fileData (binary)的屬性,並在您的子類中使用NSData,然後只需設置file.fileData = yourFileData,Core Data將決定將其存儲在何處。

無需自己跟蹤URL。不要忘記存儲某種標識符(文件名)以允許您檢索所需的文件。

編輯

順便說一句,如果你只是想存儲屬性串的圖像,然後它可能是最好使用變形屬性。如果您希望自動轉換爲NSImage,UIImage或NSAttributedString(或其他可存檔的對象),則可變形是很有用的。

設置文件這樣

NSData * data = [NSData dataWithContentsOfURL:...]; 
file.fileData = data; 

將數據寫入到文件中使用

bool result = [file.fileData writeToURL:atomically:]; 
+0

所以我想檢查「存儲在外部記錄文件」fileData屬性? – Chet

+0

http://eugenepblog.wordpress.com/2013/05/21/transformable-attributes-in-coredata-enteties/ - 我看到這個,但任何想法,如果它的任意文件? – Chet

+0

是的,還沒有看到博客 –

1

要同步設備之間的核心數據,我建議你看看這個網站,我有發佈了針對iOS和OS X應用程序的Core Data和iCloud集成的詳細信息。這超出了本網站的答案範圍。

http://ossh.com.au/design-and-technology/software-development/

+0

謝謝,我會檢查一下。另請參閱我的說明。希望這將清除一切。抱歉,所有的困惑 – Chet

相關問題