0

我目前正在为 ipad 组装一个商业应用程序。它将与 Microsoft SQL 服务器数据库通信。

我的问题是什么是最有效的方式来提取关系数据。一个例子是我在应用程序中显示联系人列表。联系人记录有一个departmentID 字段(与department 表相关)和一个ContactTypeID 字段(与ContactType 表相关)。我希望当用户第一次启动应用程序时,我会将部门和联系人类型表数据拉到 ipad 上。当我提取联系人列表数据时,我只会提取字段的 ID,并将其相关数据从我在启动时提取的数据中提取出来。用户必须能够单击列表中的记录并调出所选联系人的详细信息页面。这是一个简单的例子,但希望它能说明我的观点。

有没有人对此最好的方法有任何建议?我将需要从服务器中提取数据和推送数据。

提前致谢

4

1 回答 1

1

一种流行的方法是将服务器端对象转换为 JSON,然后将 JSON 字符串发送到设备。在设备上,使用一些 JSON 框架将 JSON 解码为 NSDictionary/NSArray 值(我建议使用JSONKit,因为它非常简单且非常快速)。

一旦你有你解码的 JSON,你可以使用(无耻的插件警告)这个技术将你的 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 手动解决关系。

最好测试这两种方法,看看哪一种在您的特定情况下效果更好。就个人而言,我建议使用嵌套方法(如果您的数据库布局允许),因为它更快,并且关系解析是在服务器上完成的(您可能负担得起),而不是在设备上(您可能可以)如果您有一个大型数据库,则负担不起)。

于 2010-11-15T09:10:42.917 回答