通过分组将对象添加到 NSMutablearray

2023-12-30

我希望我的 NSArray SampleData 从 parse.com 数据库接收实际数据,假设如下:

self.sampleData = @[ @{ @"date": @"12/5/2014",
                        @"group": @[ @{ @"text": @"post1", @"location": @"x,y" },
                                     @{ @"text": @"post2", @"location": @"x,y" },
                                     @{ @"text": @"post3", @"location": @"x,y" },
                                     @{ @"text": @"post4", @"location": @"x,y" },
                                     @{ @"text": @"post5", @"location": @"x,y" }
                                   ]
                        },
                     @{ @"date": @"12/3/2014",
                        @"group": @[ @{ @"text": @"post6", @"location": @"x,y" },
                                     @{ @"text": @"post7", @"location": @"x,y" },
                                     @{ @"text": @"post8", @"location": @"x,y" },
                                     @{ @"text": @"post9", @"location": @"x,y" },
                                     @{ @"text": @"post10", @"location": @"x,y" }
                                   ]
                        }
                  ];

如您所见,我想按日期对文本和位置进行分组,以便我可以在视图中显示它们,以日期作为标题,以文本/位置作为内容。 以下是我到目前为止能够做的事情:

PFQuery *postQuery = [PFQuery queryWithClassName:kPAWParsePostsClassKey];
[postQuery whereKey:kPAWParseUserKey equalTo:[PFUser currentUser]];

postQuery.cachePolicy = kPFCachePolicyNetworkElseCache;
postQuery.limit = 20;

[postQuery findObjectsInBackgroundWithBlock:^(NSArray *myPosts, NSError *error)
 {
     if( !error )
     {

         NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
         [formatter setDateFormat:@"MM/dd/yyyy"]; 

         NSMutableArray *objectArray = [NSMutableArray new];

         for (PFObject *object in myPosts) {
             [objectArray addObject:@{@"createdAt": [formatter stringFromDate:object.createdAt], @"text": [object objectForKey:@"text"], @"location": [object objectForKey:@"location"]}];
         }

         self.sampleData = objectArray;
         NSLog(@"My sampleData --> %@", self.sampleData);

     }
 }
];

上面的代码显然没有任何分组,所以这里确实需要帮助。


好的,您有一个项目数组,并且您希望根据特定键将它们分组为多个部分。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yyyy"];

// Sparse dictionary, containing keys for "days with posts"
NSMutableDictionary *daysWithPosts = [NSMutableDictionary dictionary];

[myPosts enumerateObjectsUsingBlock:^(PFObject *object, NSUInteger idx, BOOL *stop) {

    NSString *dateString = [formatter stringFromDate:[object createdAt]];

    // Check to see if we have a day already.
    NSMutableArray *posts = [daysWithPosts objectForKey: dateString];

    // If not, create it
    if (posts == nil || (id)posts == [NSNull null])
    {
        posts = [NSMutableArray arrayWithCapacity:1];
        [daysWithPosts setObject:posts forKey: dateString];
    }

    // add post to day
    [posts addObject:obj];
}];

// Sort Dictionary Keys by Date
NSArray *unsortedSectionTitles = [daysWithPosts allKeys];
NSArray *sortedSectionTitles = [unsortedSectionTitles sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    NSDate *date1 = [formatter dateFromString:obj1];
    NSDate *date2 = [formatter dateFromString:obj2];
    return [date2 compare:date1];
}];

NSMutableArray *sortedData = [NSMutableArray arrayWithCapacity:sortedSectionTitles.count];

// Put Data into correct format:
[sortedSectionTitles enumerateObjectsUsingBlock:^(NSString *dateString, NSUInteger idx, BOOL *stop) {
    NSArray *group = daysWithPosts[dateString];
    NSDictionary *dictionary = @{ @"date":dateString,
                                  @"group":group };
    [sortedData addObject:dictionary];
}];

self.sampleData = sortedData;

这段代码不会生成exactly你要求什么。它将生成如下所示的内容:

sampleData = @[ @{ @"date": @"12/5/2014",
                    @"group": @@[ PFObject*,
                                 PFObject*,
                                 PFObject*,
                                 PFObject*,
                                 PFObject*,
                               ]
                    },
                 @{ @"date": @"12/3/2014",
                    @"group": @[ PFObject*,
                                 PFObject*,
                                 PFObject*,
                                 PFObject*,
                                 PFObject
                               ]
                    }
              ];

无需转换您的PFObject* in the myPosts数组到@{ @"text": @"post5", @"location": @"x,y" }因为您将无法访问其他信息。这是你将如何使用它sampleData array.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; {
    return self.sampleData.count;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section; {
    return self.sampleData[section][@"date"];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; {
    return self.sampleData[section][@"group"].count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; {

    PFObject *post = self.sampleData[indexPath.section][@"group"][indexPath.row];
    UITableViewCell *cell = // dequeue A reusable tableviewcell here

    // configure the cell here

    return cell;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过分组将对象添加到 NSMutablearray 的相关文章

随机推荐

  • Angular - 如何查看过滤器结果数组以了解控制器的更改

    我有一个过滤器 可以通过 ng repeat 列表根据某些条件进行过滤 我如何查看由过滤服务创建的结果数组以了解控制器内部的更改 完整的问题和描述在这里角度工厂过滤器 无法将数据传递到过滤器 https stackoverflow com
  • 如何最小化最短路径树的总成本

    我有一个具有正边权重的有向无环图 它具有单个源和一组目标 距离源最远的顶点 我找到从源到每个目标的最短路径 其中一些路径重叠 我想要的是一个最短路径树 它可以最小化所有边上的权重总和 例如 考虑其中两个目标 假设所有边的权重相等 如果它们在
  • Bitmap 从 BitmapFactory.decodeFile(filename) 返回 null

    当我调用此函数时 图像视图中没有图像bitmapFactory decodefile filename 显示空 请为此提供帮助 这是我的代码 public Bitmap ShowImage String imageName String u
  • 为什么一些mysql连接在删除+插入后选择mysql数据库的旧数据?

    我的 python wsgi Web 应用程序中的会话出现问题 2 个 wsgi 守护进程中的每个线程都有一个不同的 持久的 mysqldb 连接 有时 在删除旧会话并创建新会话后 某些连接仍然会在选择中获取旧会话 这意味着它们无法验证会话
  • 如何在javascript中监视窗口选择更改事件

    有没有办法监听window selection的change事件 类似于回调 当用户选择不同的内容时调用 如果您使用的是 jQuery 并且您想要处理 ID 为 的特定项目的选择myInput 你可以这样做 myInput select f
  • 如何在 SQLPlus 或 PL/SQL 中制作菜单?

    我正在制作这个程序 它有一个菜单 可以获取用户的输入并根据他 她的选择执行特定的脚本 大致如下 Please make a selection 1 Do script a 2 Do script b 3 Do script c 我看了这个链
  • 从 MongoDB 中删除重复项

    你好 我在 mongodb 中有大约 500 万个文档 复制 每个文档有 43 个字段 如何删除重复的文档 我尝试过 db testkdd ensureIndex duration 1 protocol type 1 service 1 f
  • 如何将 3d numpy 数组转换为 2d

    我有一个像这样的 3d 矩阵 np arange 16 reshape 4 2 2 array 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 并想以网格格式堆叠它们 最终得到 array 0 1 4 5 2 3
  • TLS V 1.1 和 TLS V 1.2 iOS 问题

    有几个问题 如果我的服务器已经运行 TLS1 2 我是否还需要将 NSAppTransportSecurity 功能添加到我的 info plist 中 如果是 为什么 不是所有运行 iOS9 或 gt iOS10 11 版本的苹果设备都可
  • 将列表元素的连续重复项打包到 Prolog 中的子列表中

    我无法返回问题 9 的答案P 99 九十九个 Prolog 问题 http www ic unicamp br meidanis courses mc336 2009s2 prolog problemas 将列表元素的连续重复项打包到子列表
  • Tradingview的自动调整比例功能:排除指标的绘图

    我有一个指标 可以自动压缩 Y 轴上的整个价格图表 所以我必须在大多数情况下让它不可见 即使双击 y 尺度 图表自动调整功能 也可以包含所有可见指标 有没有办法阻止一个或所有指标这样做 哦 我刚刚找到了答案 只需右键单击 y 刻度即可调出带
  • 如何在 Linux 上将光标锁定在窗口内部?

    我正在尝试为 Linux 制作一款游戏 其中涉及大量快速动作和鼠标光标的快速移动 如果用户想在窗口模式下玩 我很想将光标锁定在窗口内部 以避免在激烈的战斗中意外更改程序 显然 如果用户更改程序或按退出键 这会自行取消 暂停菜单 在 Wind
  • 随机访问 C++ 和 Python 时 Linux 内存映射文件性能不佳

    在尝试使用内存映射文件创建多 GB 文件 大约 13 GB 时 我遇到了 mmap 的问题 最初的实现是在 Windows 上使用 boost iostreams mapped file sink 在 c 中完成的 一切顺利 然后代码在 L
  • 在非连续版本之间迁移时出现核心数据迁移错误

    问题 我的核心数据模型有 13 个版本 我制作了 13 个映射模型 V1 V2 V2 V3 等 我已经打开了自动迁移 在两个连续版本 例如 V12 V13 之间迁移时 迁移工作完美 在两个非连续版本 例如 V11 V13 之间迁移时 迁移失
  • 插入到已经排序的列表中

    对于 Java 我有一个名为 TestClass 的类 它有一个名为 Name 的成员 它是一个字符串 我还有一个这种类型的 ArrayList 它已经按名称字母顺序排序 我想要做的是找到放置 TestClass 新实例的最佳索引 到目前为
  • PHP 命名空间覆盖 Use 语句

    谁能告诉我是否可以覆盖 use 语句 我的示例是有一个 MVC 设置 其中的核心代码能够使用扩展核心版本的自定义版本覆盖每个控制器 模型 我面临的问题是我的核心控制器有一个 use 语句告诉它使用核心模型 所以如果我扩展模型 我不知道如何告
  • 如何使C程序的堆栈可执行?

    有没有办法通过编译使C程序的堆栈可执行 I did gcc o convert g convert 然后运行 readelf l convert 检查堆栈是否可执行 但输出为 GNU STACK 0x000000 0x00000000 0x
  • pandas groupby 中的行联合

    我有一个看起来像这样的大数据框 并且可以复制粘贴df pd read clipboard sep s s user nm month unique ips shifted ips halves quarters mo pairs 10011
  • 更新 Clojure 中的分层/树结构

    我有一个 Atom 比如 x def x atom name A id 1 children name B id 2 children name C id 3 children name D id 4 children 并且需要更新子图 例
  • 通过分组将对象添加到 NSMutablearray

    我希望我的 NSArray SampleData 从 parse com 数据库接收实际数据 假设如下 self sampleData date 12 5 2014 group text post1 location x y text po