Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 添加缺少的对象以创建有序集合_Objective C_Cocoa_Nsarray_Key Value Coding - Fatal编程技术网

Objective c 添加缺少的对象以创建有序集合

Objective c 添加缺少的对象以创建有序集合,objective-c,cocoa,nsarray,key-value-coding,Objective C,Cocoa,Nsarray,Key Value Coding,这个主题很模糊,因为我不知道如何用一句话表达我想要的东西 下面是: 我有一大堆字典。每个NSDictionary代表日历年的一天。每个NSDictionary都有一个值为NSDate的键“date”。数组中应该有365个NSDictionary项。字典是由一个我无法控制的服务器创建的,有时会丢失多达100天 我需要确保数组有365个字典,每一个都比下一个晚一天 我目前按日期对数组进行排序,遍历它,将NSDictionary从当前数组复制到新数组。在执行此操作时,我将当前字典的日期值与下一个字典的

这个主题很模糊,因为我不知道如何用一句话表达我想要的东西

下面是:

我有一大堆字典。每个NSDictionary代表日历年的一天。每个NSDictionary都有一个值为NSDate的键“date”。数组中应该有365个NSDictionary项。字典是由一个我无法控制的服务器创建的,有时会丢失多达100天

我需要确保数组有365个字典,每一个都比下一个晚一天

我目前按日期对数组进行排序,遍历它,将NSDictionary从当前数组复制到新数组。在执行此操作时,我将当前字典的日期值与下一个字典的日期值进行比较。如果两个日期之间的间隔超过一天,我会向新数组中添加足够的新字典来覆盖这些缺失的日期(并相应地设置它们的日期),然后继续执行

由于日期应该是按顺序排列的,我想知道在框架或语言中是否还没有一种机制可以用来表示“这里有一个数组,这个键路径应该是连续的。找到并创建缺少的元素,这里有一个块或方法可以用来初始化它们”

我的方法有些地方执行得很差,所以我求助于你。想法


谢谢。

您这样做听起来非常明智,据我所知,在基本框架中不会自动完成。

此代码将对它们进行排序

NSArray *dates;  // wherever you get this...
NSArray *sortedDates = [dates sortedArrayUsingComparator:^(id obj1, id obj2) 
    {
    return [[obj1 valueForKey:@"date"] compare:[obj2 valueForKey:@"date"]];
    }];

至于创建缺少的条目,您必须自己完成。

您不需要进行排序:

  • 创建一个包含365(或366)个占位符字典的数组(可以对所有插槽使用相同的占位符字典,也可以使用NSNull)
  • 遍历传入的数组,找出每个字典的作用日期。将每个字典放在数组中正确的位置

  • 谢谢这是一个必须考虑的技术。