通过对具有匹配 id 编号的对象进行分组来重建 NSArray?

2024-04-11

我有一个 NSArray,数组中的每个对象都有一个 groupId 和一个名称。每个对象都是唯一的,但有许多对象具有相同的 groupId。有没有办法可以将数组分开并重建它,以便将名称分组到具有相应 groubId 的单个对象中?这是数组当前的样子:

2013-03-12 20:50:05.572 appName[4102:702] the  array:  (
        {
        groupId = 1;
        name = "Dan";
    },
        {
        groupId = 1;
        name = "Matt";
    },
        {
        groupId = 2;
        name = "Steve";
    },
        {
        groupId = 2;
        name = "Mike";
    },
        {
        groupId = 3;
        name = "John";

    },
        {
        groupId = 4;
        name = "Kevin";
    }
)

这就是我希望它看起来像的样子:

2013-03-12 20:50:05.572 appName[4102:702] the  array:  (
        {
        groupId = 1;
        name1 = "Dan";
        name2 = "Matt";
    },
        {
        groupId = 2;
        name1 = "Steve";
        name2 = "Mike";
    },
        {
        groupId = 3;
        name = "John";

    },
        {
        groupId = 4;
        name = "Kevin";
    }
)

编辑: 我尝试过很多次尝试,但都失败了,大多数都是这样的(草率的娱乐,但给出一个想法):

int idNum = 0;
for (NSDictionary *arrObj in tempArr){
    NSString *check1 = [NSString stringWithFormat:@"%@",[arrObj valueForKey:@"groupId"]];
    NSString *check2 = [NSString stringWithFormat:@"%@",[[newDict valueForKey:@"groupId"]];
    if (check1 == check2){
        NSString *nameStr = [NSString stringWithFormat:@"name_%d",idNum];
        [newDict setValue:[arrObj valueForKey:@"name"] forKey:nameStr];
    }
    else {
        [newDict setValue:arrObj forKey:@"object"];
    }
    idNum++;
}  

NSArray *array = @[@{@"groupId" : @"1", @"name" : @"matt"},
                   @{@"groupId" : @"2", @"name" : @"john"},
                   @{@"groupId" : @"3", @"name" : @"steve"},
                   @{@"groupId" : @"4", @"name" : @"alice"},
                   @{@"groupId" : @"1", @"name" : @"bill"},
                   @{@"groupId" : @"2", @"name" : @"bob"},
                   @{@"groupId" : @"3", @"name" : @"jack"},
                   @{@"groupId" : @"4", @"name" : @"dan"},
                   @{@"groupId" : @"1", @"name" : @"kevin"},
                   @{@"groupId" : @"2", @"name" : @"mike"},
                   @{@"groupId" : @"3", @"name" : @"daniel"},
                   ];

NSMutableArray *resultArray = [NSMutableArray new];
NSArray *groups = [array valueForKeyPath:@"@distinctUnionOfObjects.groupId"];
for (NSString *groupId in groups)
{
    NSMutableDictionary *entry = [NSMutableDictionary new];
    [entry setObject:groupId forKey:@"groupId"];

    NSArray *groupNames = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"groupId = %@", groupId]];
    for (int i = 0; i < groupNames.count; i++)
    {
        NSString *name = [[groupNames objectAtIndex:i] objectForKey:@"name"];
        [entry setObject:name forKey:[NSString stringWithFormat:@"name%d", i + 1]];
    }
    [resultArray addObject:entry];
}

NSLog(@"%@", resultArray);

Output:

    (
        {
        groupId = 3;
        name1 = steve;
        name2 = jack;
        name3 = daniel;
    },
        {
        groupId = 4;
        name1 = alice;
        name2 = dan;
    },
        {
        groupId = 1;
        name1 = matt;
        name2 = bill;
        name3 = kevin;
    },
        {
        groupId = 2;
        name1 = john;
        name2 = bob;
        name3 = mike;
    }
 )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过对具有匹配 id 编号的对象进行分组来重建 NSArray? 的相关文章

  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • DatePicker 停止 CoreData 按预期工作

    我有一个应用程序 它保存 UIDatePicker 中的文本和日期 然后在您回到 UIDatePicker 中的该日期时显示该注释 效果很好 只有我发现将 UIDatePicker 日期设置为今天会停止 CoreData 工作 只有当我运行
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • 为什么在授予用户权限时,UIUserNotificationType.None 在当前设置中返回 true?

    我正在编写一种方法来检查当前用户设置是否包含某些通知类型 当检查当前设置是否包含 UIUserNotificationsType None 时 无论授予权限还是拒绝权限 它都会返回 true 有谁知道这是为什么吗 func register
  • 自定义 UITableViewCell 选择样式?

    当我点击我的UITableViewCell 当我单击单元格时 背景部分 我的背景图像未覆盖的区域 会变成蓝色 另外 所有的UILabel单击时单元格上的 s 变为白色 这就是我想要的 然而 我不想要的是当我点击它时的蓝色背景 但如果我这样做
  • 为什么我不能在 Realm 属性上使用 private

    我正在尝试在 RealmSwift 中存储一个枚举案例 但 Realm 不支持枚举 本文 https medium com it works locally persisting swift enumerations with realm
  • 使用 NSError 检查错误的正确结构

    我正在编写各种例程 并尽力保持其整洁和重构 我正在创建的方法开始看起来与此代码类似 IBAction buttonPress id sender Create Document Shopping List with this documen
  • 以编程方式触发iOS摇动事件

    如何以编程方式触发 iOS 中的摇动事件 我尝试过以下方法 但它总是崩溃 void shake NSLog TEST UIMotionEventProxy m NSClassFromString UIMotionEvent alloc in
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • SiriKit 错误:此应用程序不支持捐赠意图

    我在 Xcode 10 iOS 12 Beta 中捐赠自定义意图时遇到问题 我创建了一个在我的主应用程序目标和 OrderIntent 目标之间共享的自定义框架 我创建了一个 intentdefinition 文件 并将目标成员资格设置为我
  • 当强制退出/向上滑动以终止 iOS 应用程序而不点击横幅/警报时,如何获取推送通知有效负载?

    我正在构建一个应用程序来处理从 Parse 推送的通知 并尝试创建通知历史记录功能 我已经成功启用了后台模式 因此当应用程序在后台运行时 应用程序可以通过以下方式很好地获取有效负载application didReceiveRemoteNo
  • UICollectionView 拖放文件夹创建

    我正在使用 UICollectionView 创建 iOS 画廊应用程序 我希望用户能够拖放图像来重新排序图库并创建文件夹 类似于 iPhone 上的主屏幕 我发现了以下内容tutorial http nshint io blog 2015
  • 频繁绘制 CGPath 时的性能

    我正在开发一个将数据可视化为折线图的 iOS 应用程序 该图被绘制为CGPath在全屏自定义中UIView最多包含 320 个数据点 数据经常更新 图表需要相应地重新绘制 刷新率为 10 秒就很好了 到目前为止很容易 然而 我的方法似乎需要
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • Google 地图 API -> OpenGLES 崩溃

    日志是从 Crashlytics 粘贴的 对于许多用户来说 崩溃经常发生 据我所知 它与设备 iOS 版本无关 我在我的代码中找不到任何错误 这似乎是纯粹的库问题 是 Google 地图 API 错误吗 我可以做些什么来修复它 或者我应该在
  • 在 UIImage 顶部绘制透明圆圈 - iPhone SDK

    我在尝试找出如何在 UIImageView 中的 UIImage 顶部绘制透明圆圈时遇到了很多麻烦 谷歌给了我线索 但我仍然找不到有效的例子 有没有人知道的例子可以证明这一点 最简单的方法就是创建一个半透明的方形 UIView 然后将其图层
  • 在现有 iOS 应用程序中集成 React-native(0.40.0) 后找不到 Yoga/Yoga.h 头文件

    在我的 Swift iOS 应用程序中集成 React Native 后 我无法构建 yoga Yoga h file cannot be found 我已经浏览了文档 查看了react native github页面 检查了类似问题的SO
  • 为什么我的视图仍然以横向呈现?

    我的视图是由导航控制器控制的 因此我将导航控制器支持的方向设置为明确的纵向和纵向UpSideDown 这可以工作 但是如果调用视图时前一个视图处于横向状态 它将以横向方式呈现并保持横向状态 直到设备旋转 如何防止这种情况发生 这是我的代码
  • UIWebView Bug:-[UIWebView cut:]:无法识别的选择器发送到实例

    In the UIWebView 如果包含文本的输入元素具有焦点 并且按下按钮导致输入失去焦点 则随后双击输入以重新获得焦点并从出现的弹出栏中选择 剪切 或 复制 或 粘贴 会导致这UIWebView因错误而崩溃 UIWebView cut

随机推荐

  • 如何将 JToken 转换为 string[]?

    我正在尝试将 JObject 中的数组读取到 string 中 但我不知道如何操作 代码非常简单 如下所示 但不起作用 失败并出现错误无法将 JToken 转换为 string JObject Items jsonSerializer De
  • NiFi:ExtractText 中的正则表达式获取 CSV 标头而不是数据

    我正在开发一个获取 CSV 文件的流程 我想根据 CSV 记录中的第一个字段将记录放入不同的目录中 例如 CSV 文件看起来像这样 country firstname lastname ssn mob num US xxxx xxxxx x
  • 如何使用其内容识别图像文件格式?

    如果图像文件的格式为 png那么它将包含 PNG 位于文件的开头 当读入Text mode 如果图像文件的格式为 bmp那么它将包含BM 位于文件的开头 当读入Text mode 我知道图像格式在文件开头包含一定大小 字节 的文本 数据 这
  • 无法安装kivy。为 kivy 构建轮子失败 (pyproject.toml)

    我不知何故搞砸了我的 pip 或我的 kivy 文件 我的也安装不了我试过了pip install kivy并且git clone https github com kivymd KivyMD git depth 1 我使用的是 macos
  • 实时工作流程的自定义工作流程活动中缺少跟踪日志

    我已经针对 CRM 2013 编写了一个自定义工作流活动 您不需要了解它的作用 我遇到的问题是 尽管实例化了ITracingService 我使用生成的任何跟踪内容Trace 方法在运行时被混淆仅适用于实时工作流程 换句话说 如果我异步运行
  • 如何从线性渐变中获取当前颜色?

    我有一个搜索栏 其值范围为 1 到 10 THUMB 停止在 1 2 3 4 5 10 如果 SeekBar 是线性渐变 则背景颜色 颜色从红色开始 然后是黄色 最后是绿色 如何获取拇指所在位置的当前颜色 pskink的建议 https s
  • OAuth 2 承载授权标头

    随着客户端 API 的更新 HTTPBasicAuthication 方法已替换为 OAuth2Bearer授权标头 使用旧的 API 我会执行以下操作 NSURLCredential credential NSURLCredential
  • 让 R 停止正在运行的 EC2 机器

    我有一些工作流程 我希望 R 在完成脚本后停止正在运行的 Linux 机器 我可以想到两种类似的方法来做到这一点 以 root 身份运行 R 然后调用system halt 从 root shell 脚本运行 R 可以以任何用户身份运行 R
  • 指数时间复杂度的真实示例

    我正在寻找一个直观的 现实世界的问题示例 该问题需要 最坏情况 指数时间复杂度来解决我正在做的演讲 以下是我提出的其他时间复杂度的示例 其中许多取自这个问题 https stackoverflow com questions 1592649
  • 检查表单是否已提交 - PHP

    检查表单是否已提交以确定是否应该将表单的变量传递给我的验证类的最佳方法是什么 首先我想也许 isset POST 但这总是会返回 true 因为超全局变量在任何地方都被定义 我不想使用以下方式迭代表单的每个元素 if isset POST
  • 如何重现错误“由于暂停纯视频背景媒体以节省电量,播放()请求被中断”?

    介绍 作为我项目的一部分 我有一个接收视频流的播放器 我希望它在流开始和结束时自动播放和自动停止 因此我引入了一个检查来查看流是否处于活动状态并在每种情况下启动和 或停止播放器 这是一个企业网站 有时有多达 3000 名用户同时观看视频流
  • PyTorch 教程错误训练分类器

    我刚刚开始 PyTorch 教程使用 PyTorch 进行深度学习 60 分钟闪电战我应该补充一点 我之前没有编写过任何 python 但其他语言 如 Java 现在 我的代码看起来像 import torch import torchvi
  • java 的地理图表

    谁能推荐一个 Java 组件 它可以让您创建一个漂亮的世界地图图像 突出显示某些国家 基于一些统计数据 与此图像类似的东西 类似于 Google 地理图表 但适用于 Java https developers google com char
  • Visual Studio Android ApkSigner 在密钥库中找不到密钥

    我在 Visual Studio 中创建 APK 时收到此错误 Failed to load signer signer 1 C googleplay keystore entry googleplay does not contain a
  • 使用pipenv,如何在pipfile中指定最低的python版本?

    Pipenv 有没有办法在 Pipfile 中指定 python 的最低版本 像这样的东西会起作用吗 requires python version gt python 3 5 No pipenv does not支持这一点 每Pipenv
  • xcode 接口生成器对象链接到检查器中的自定义类?

    在Xcode 最新版本 Interfacebuilder中 您可以将对象链接到代码 我创建了一个类 interface FileChangeController NSObject 但它没有在 Interface Builder Inspec
  • ios8 - 如何显示默认共享表

    我想展示并使用默认的 分享到其他服务 表 以便允许分享到 Twitter Facebook 电子邮件等 我不知道如何从我的应用程序中显示此视图 我该怎么做 您可以使用简单的活动控制器来显示默认共享应用程序 NSArray activityI
  • 使用 py2neo 在 neo4j 上查询写入性能

    目前 我正在努力寻找一种高性能的方法 使用 py2neo 运行多个查询 我的问题是 python 中有一大堆需要写入 neo4j 的写入查询 我现在尝试了多种方法来解决这个问题 对我来说最好的工作方法如下 from py2neo impor
  • 在 ninja/cmake 中操纵独立目标的构建顺序

    我正在开发一个使用 cmake ninja 构建的 C 项目 在 64 线程计算机上有大约 1200 个构建目标 有一个翻译单元需要 10 分钟来编译 大多数其他单元都相对较快 因此所有其他目标的构建一起只需要大约 9 分钟 在所有线程上构
  • 通过对具有匹配 id 编号的对象进行分组来重建 NSArray?

    我有一个 NSArray 数组中的每个对象都有一个 groupId 和一个名称 每个对象都是唯一的 但有许多对象具有相同的 groupId 有没有办法可以将数组分开并重建它 以便将名称分组到具有相应 groubId 的单个对象中 这是数组当