Arrays 从数组中筛选给定特定元素的swift数组
下面是我收到的响应数组。 我必须在Arrays 从数组中筛选给定特定元素的swift数组,arrays,swift,xcode,filter,Arrays,Swift,Xcode,Filter,下面是我收到的响应数组。 我必须在UITableView上显示此数据,其中标题标题将是我的transactionDate,与该日期相关的项目将作为该部分中的行数 对于下面的代码,我已经成功地从给定的列表中提取了唯一的日期,并且在唯一的日期数组中得到了3个元素 现在我想要另一个数组,它将具有与来自唯一日期数组的日期关联的项 所以在结果中,我应该为transactionDate值获取3个数组。 它应该像array1一样,有两个与日期相关的值对象01/02/2021array2将有一个与日期相关的值
UITableView
上显示此数据,其中标题标题将是我的transactionDate
,与该日期相关的项目将作为该部分中的行数
对于下面的代码,我已经成功地从给定的列表中提取了唯一的日期,并且在唯一的日期数组中得到了3个元素
现在我想要另一个数组,它将具有与来自唯一日期数组的日期关联的项
所以在结果中,我应该为transactionDate值获取3个数组。
它应该像array1一样,有两个与日期相关的值对象01/02/2021
array2将有一个与日期相关的值27/01/2021
,array3将有一个与日期相关的值对象25/01/2021
随着给定日期事务的进行,这些数据将不断增加,因此需要一些动态实现
我的所有数据元素都在包含所有这些元素的数组activityListArray
中。
其中我筛选出了如下唯一日期
for i in activityListArray{
date_array.append(i.transactionDate!)
}
let unique = Array(Set(date_array))
现在,为了得到预期的结果,我下一步应该做什么
提前谢谢
我得到的答复如下:
{
accountNumber = 0000078;
amount = 0;
buyingAmount = "277.42";
buyingCurrency = EUR;
currency = "";
customerInstruction = "0201000009958346-000000218";
payeeName = "Ash Roy";
reasonCode = "";
sellingAmount = "254.00";
sellingCurrency = GBP;
status = AWAITINGBANKAPPROVAL;
subType = "Payment without Fx";
transactionDate = "01/02/2021";
type = "";
},
{
amount = 0;
buyingAmount = "436.39";
buyingCurrency = GBP;
currency = "";
customerInstruction = "0201000009958346-000000210";
reasonCode = "";
sellingAmount = "788.00";
sellingCurrency = CAD;
status = PENDING;
subType = "Payment without Fx";
transactionDate = "27/01/2021";
type = "";
},
{
amount = 0;
buyingAmount = "436.39";
buyingCurrency = GBP;
currency = "";
customerInstruction = "0201000009958346-000000207";
reasonCode = "";
sellingAmount = "788.00";
sellingCurrency = CAD;
status = PENDING;
subType = "Payment without Fx";
transactionDate = "25/01/2021";
type = "";
},
{
amount = 0;
buyingAmount = "436.39";
buyingCurrency = GBP;
currency = "";
customerInstruction = "0201000009958346-000000206";
reasonCode = "";
sellingAmount = "788.00";
sellingCurrency = CAD;
status = PENDING;
subType = "Payment without Fx";
transactionDate = "01/02/2021";
type = "";
}
您不需要提取唯一的日期,Swift标准库已经为字典提供了API,在字典中,您可以使用
init(grouping:by:)
请在这里阅读所有相关内容
这将返回一个以唯一transactionDate作为键的字典,以及以该transactionDate作为值的对象数组
现在,您可以简单地将节数返回为
dict.keys.count
,将每个节中的行数返回为dict[Array(dict.keys)[indexath.section]]?。count
您可以使用字典(分组:by)
来完成此操作。@sagar:请检查发布的答案,让我知道您是否仍然面临这个问题,如果它的工作很好,请考虑接受答案:Sandeep Bhandari:谢谢兄弟,这对我帮助很大,值得称赞。非常感谢。@sagar:很高兴我能帮忙:)@Sandeep Bhandari:-只需要快速更新帮助,我们可以使用transactionDate按升序或降序对数据进行排序吗。。。。?有什么相同的提示吗?你可以,只需搜索排序字典键:)就可以了,让我检查一下我是否能找到已经回答的问题
let dict = Dictionary<String,[YourObject]>(grouping: activityListArray, by: {$0.transactionDate})
let dict = Dictionary(grouping: activityListArray, by: {$0.transactionDate})