2010-11-15 79 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