簡體   English   中英

Mac和iPhone上的共享模型

[英]Shared Model on Mac and iPhone

我目前正在考慮統一我的應用程序模型。 目前我在mac / iphone上使用了不同的型號。 缺少類(NSAttributedString)和缺少技術(Bindings)使我決定采用這個決定。

隨着SDK 3.2中的第一個限制以及我計划創建優化的iPad版本,我正在重新考慮我的決定。 因為我還需要在我的模型中存儲NSPoints / CGPoints,NSRect / CGRects,NSColor / UIColor和NSImage / UIImage結構/對象,我不確定處理它們的最佳方法是什么。

編寫我自己的MNColor對象,根據架構封裝NSColor和UIColor? 編寫我自己的rect函數,根據arch調用相應的函數? 或者在mac上的模型中使用CGRect?

任何輸入將非常感謝!

CorePlot是適用於iPhone和Mac OS X的優秀Cocoa繪圖框架。
它在兩個平台上共享通用代碼 - 也許你可以通過瀏覽它們的來源獲得一些想法。

對於某些跨平台問題,CP在單獨的頭文件中使用特定於平台的定義來獲得“不可知”的圖像類。
每個平台的Xcode項目包括一個相應的標題:

它們還有自定義顏色類CPColor (基於CGColorRef

對於NSPointNSRect ,我將在模型中使用Core Graphics結構,並在需要時使用NSRectFromCGRectNSPointFromCGPoint進行轉換。 (Mac OS 10.5+)

最近的CIMGF文章還涉及iPhone / Mac不兼容性:
創建跨平台的NSManagedObject

我可能會誤解你的設置和問題,但聽起來你的數據模型不夠抽象。

嚴格地說,“NSPoints / CGPoints,NSRect / CGRects,NSColor / UIColor和NSImage / UIImage結構/對象”都是與數據模型無關的實現/ UI元素。 當然,API可以輕松歸檔這些內容,但這會讓您陷入現在的問題。 您正在保存附加到特定硬件和特定實現的對象/結構,現在您可以輕松地移植/重用它們。

更好的方法是創建一個抽象的數據模型,該模型對硬件或API的其余部分一無所知。 它應該將所有NSPoints / CGPoints,NSRect / CGRects存儲為字符串或數字。 它應該將顏色存儲為數字,字符串或原始數據。 圖像應存儲為原始數據。

這樣,應用程序的核心即它實際操作的數據是通用的。 要顯示信息,您只需要控制器請求原始數據,然后讓控制器將其轉換為硬件/ API特定的結構/對象。

核心數據提供了抽象數據模型的一個很好的例子。 它只存儲字符串,數字,日期,布爾等,但它可以存儲任何支持核心數據的平台的任意復雜信息。

即使您不使用Core Data,也就是您應該拍攝的數據模型類型。

@“編寫我自己的rect函數,根據arch調用相應的函數” - 這將是好的。

@“編寫我自己的封裝NSColor和UIColor的MNColor對象” - 如果您的包裝類設計能夠在跨平台情況下處理MNColor對象,那將會很好。 即,如果導入到iPhone的mac數據庫現在應該能夠通過你的包裝器而不是NSColor以某種方式提供UIColor對象。

這取決於您的使用情況,但我不鼓勵將圖像存儲在數據庫中。 他們在文件系統上的表現更好,(可能)存儲在數據庫中的圖像路徑。

通過將圖像存儲在數據庫中我可以看到任何收益的一種情況是,如果您想要一個可以移動的文件系統單元,那么可以移動所有內容。 雖然使用iPhone這不是一個可能的用例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM