2010-11-15 45 views
0

我目前正在爲ipad製作一個商業應用程序。它將與Microsoft SQL服務器數據庫交談。iPad應用程序拉和推關係數據

我的問題是通過線拉取關係數據的最有效方法是什麼。一個例子就是在應用程序中顯示聯繫人列表。聯繫人記錄具有一個departmentID字段(與部門表相關)和一個ContactTypeID字段(它與ContactType表相關)。我希望當用戶第一次啓動應用程序時,我會將部門和聯繫人類型表數據放到ipad上。當我將聯繫人列表數據拉出時,我只需將這些字段的ID取出,並將其相關數據從我在啓動時拉出的數據中提取出來。用戶必須能夠點擊列表中的記錄並調出所選聯繫人的詳細信息頁面。這是一個簡單的例子,但希望它能讓我明白。

有沒有人對此有最好的方法有任何建議?我將需要拉取數據並將數據推送到服務器和從服務器推送數據。

在此先感謝

回答

1

一種流行的做法是你的服務器端對象轉換成JSON,然後發送JSON字符串到設備。在設備上,使用一些JSON框架將JSON解碼爲NSDictionary/NSArray值(我建議JSONKit,因爲它非常簡單,並且very fast)。

一旦你有了你的解碼JSON,你可以使用(無恥插頭警告)this technique把你的NS *對象變成CoreData對象,並將它們保存到你的手機上。

至於保持關係,您可以使用嵌套表示或平面表示。一個示例嵌套實現將是:

{ 
    class: "Contact", 
    first_name: "John", 
    last_name: "Doe", 
    contact_type: { 
     class: "ContactType", 
     type: "some value" 
    }, 
    department: { 
     class: "Department", 
     name: "Department of Transportation" 
    } 
} 

如果您有一個簡單的數據庫,沒有關係週期,這是一種首選方法。

或者,你可以使用一個平表示:

{ 
    class: "Contact", 
    id: 1, 
    first_name: "John", 
    last_name: "Doe", 
    contact_type_id: 15, 
    department_id: 34 
} 

{ 
    class: "ContactType", 
    id: 15, 
    type: "some value" 
} 

{ 
    class: "Department", 
    id: 34, 
    name: "Department of Transportation" 
} 

那麼你就必須解決使用contact_type_id和DEPARTMENT_ID手動的關係,在設備上。

最好測試這兩種方法,看看哪一種在你的特定情況下效果更好。就個人而言,我建議使用嵌套方法(如果您的數據庫佈局允許),因爲速度更快,關係解析在服務器上完成(您可能負擔得起),而不是在設備上(您可能可以「如果你有一個龐大的數據庫,就不用擔心)。

+0

嗨弗拉基米爾,感謝您的迴應。我真的想要確定什麼是最好的方法,這樣我的數據就會盡可能小,因此它們很快。你有沒有嘗試微軟新的同步框架4,他們聲稱與任何設備通過電話交談? – MattyD 2010-11-15 21:46:30

相關問題