php - 使用冗余数据解析来自 Web 服务的信息

标签 php mysql ios objective-c cocoa-touch

我正在开发一个 iPhone 应用程序,它从我编写的 php Web 服务接收信息,然后在 UITextView 中显示该信息。

我正在检索的是列表中的条目。每个条目可以有多个子条目,但表中每个主条目只有 1 或 2 个“相关条目”。

我面临两个相关问题,我正在寻找一些关于如何克服这些问题的建议或最佳实践。

首先,根据大量阅读的帖子,我设计了数据库并尽我所能对其进行规范化。然而,缺点是,当我执行包含大量联接的查询时,我会得到一个包含大量冗余数据的表。当我解析信息时,这给我在客户端带来了问题。当我解析数据并显示它时,我的 UITextView 中最终出现了很多重复的条目。

其次,我认为解决方法可能是创建单独的查询(我知道这是一个很大的禁忌),并且只检索信息一次。这在理论上解决了我的问题,但又产生了一个新问题。由于我的应用程序异步检索信息,因此我单独进行的数据库调用由于明显的原因不会显示。此外,这感觉像是一种 hack,而不是解决我原来问题的优雅方法。

非常感谢任何指导。

最佳答案

方法 1:

假设您有 NSArray 包含 (1,2,3,4,5,5,5,5,3,3,3) 正如您所说,您正在以列表形式检索条目,并且您必须删除冗余,或者您只需选择不同的列表项,然后您可以简单地执行以下操作:

可以将NSArray转换为set来实现唯一数组

NSSet *set = [NSSet setWithArray:array];

NSArray *a = [set allObjects]; here a contains (1,2,3,4,5)

方法 2:

如果您有具有属性的对象列表,例如:

Person(name,age,gender) name , age , gender are properties .

并且您想要仅具有不同名称的对象,那么您可以执行以下操作:

NSArray *mainList; //this is your all entries list.
NSArray *uniqueNames = [mainList valueForKeyPath:@"@distinctUnionOfObjects.name"];

uniqueNames 是具有唯一名称的人员列表。如果您想根据年龄进行选择,那么您可以简单地用年龄替换名称,如下所示:

NSArray *mainList; //this is your all entries list.
NSArray *uniqueAges = [mainList valueForKeyPath:@"@distinctUnionOfObjects.age"];

希望这有帮助。

关于php - 使用冗余数据解析来自 Web 服务的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23227533/

相关文章:

iOS7:如何在iOS7上实现像联系人一样的部分索引?

ios - UISegue中途定位UIView

javascript - 从下拉列表中选择项目时显示文本框 html php?

php - 如何使用 date() 回显 future 的一天?

PHP 检测 SQL 注入(inject)尝试

php - 同一查询中的 DISTINCT 计数和求和

MySQL:插入....重复键更新:受影响的行== 3?

ios - 如何使用 $ref 和 $id 在 RestKit 中使用循环引用

php - 如何使用 Doctrine ORM 在 Symfony 中设置初始数据(不是测试数据)

php - 如何通过 PHP 检查 JavaScript 是否处于事件状态?