我目前正在为ipad整合商业应用。它将与Microsoft SQL服务器数据库进行通信。
我的问题是什么是通过线路提取关系数据的最有效方法。一个例子是我在应用程序中显示联系人列表。联系人记录具有departmentID字段(与department表相关)和ContactTypeID字段(与ContactType表相关)。我希望当用户第一次启动应用程序时,我会将部门和联系人类型表数据拉到ipad上。当我拉动联系人列表数据时,我将只拉出字段的ID,并从启动时拉出的数据中提取相关数据。用户必须能够单击列表中的记录并显示所选联系人的详细信息页面。这是一个简单的例子,但希望它能说明我的观点。
有没有人就此采取最佳方法?我将需要从服务器提取数据和推送数据。
提前致谢
答案 0 :(得分: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手动解决关系。
最好测试这两种方法,看看哪种方法在特定情况下效果更好。就个人而言,我建议使用嵌套方法(如果你的数据库布局允许它),因为它更快,并且在服务器(你可能负担得起)上完成关系解析,而不是在设备上(你可能可以'如果你有一个大型数据库,那就买得起。)