【问题标题】:IPad App pull and push relational dataiPad App 拉取和推送关系数据
【发布时间】:2010-11-15 08:38:19
【问题描述】:

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

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

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

提前致谢

【问题讨论】:

    标签: iphone ipad relational-database listings data-caching


    【解决方案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 手动解决关系。

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

    【讨论】:

    • 您好弗拉基米尔,感谢您的回复。我真的想弄清楚什么是最好的方法,所以我的数据拉和推尽可能小,所以它们很快。您是否尝试过微软声称可以通过网络与任何设备通信的新同步框架 4?
    猜你喜欢
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多