2017-10-17 98 views
1

我需要过滤Schedules[ ]阵列使用Dates[ ] Array其中"date_id" == "schedule_date_id"使用另一个阵列的值过滤阵列

我只需要那些元素date_id匹配schedule_date_id然后重新加载表。我需要根据日期显示时间表。

这是什么Swift代码?

下面是JSON我有:

{ 
dates =  (
      { 
     "date_date" = "2017-11-04"; 
     "date_id" = 4; 
     "date_image" = "https://project-isdental-cammy92.c9users.io/api/images/schedule-days/day_1.png"; 
     "date_title" = "Day 1"; 
    }, 
      { 
     "date_date" = "2017-11-05"; 
     "date_id" = 5; 
     "date_image" = "https://project-isdental-cammy92.c9users.io/api/images/schedule-days/day_2.png"; 
     "date_title" = "Day 2"; 
    } 
); 
schedules =  (
      { 
     "schedule_date" = "2017-11-04"; 
     "schedule_date_id" = 4; 
     "schedule_description" = "Schedule 7"; 
     "schedule_end_time" = "14:00:00"; 
     "schedule_id" = 7; 
     "schedule_image" = "https://project-isdental-cammy92.c9users.io/api/images/schedules/day_1.png"; 
     "schedule_location" = Mumbai; 
     "schedule_start_time" = "11:00:00"; 
    }, 
      { 
     "schedule_date" = "2017-11-04"; 
     "schedule_date_id" = 4; 
     "schedule_description" = "Schedule 8"; 
     "schedule_end_time" = "14:00:00"; 
     "schedule_id" = 8; 
     "schedule_image" = "https://project-isdental-cammy92.c9users.io/api/images/schedules/day_1.png"; 
     "schedule_location" = Mumbai; 
     "schedule_start_time" = "11:00:00"; 
    }, 
      { 
     "schedule_date" = "2017-11-04"; 
     "schedule_date_id" = 4; 
     "schedule_description" = "Schedule 9"; 
     "schedule_end_time" = "14:00:00"; 
     "schedule_id" = 9; 
     "schedule_image" = "https://project-isdental-cammy92.c9users.io/api/images/schedules/day_1.png"; 
     "schedule_location" = Mumbai; 
     "schedule_start_time" = "11:00:00"; 
    }, 
      { 
     "schedule_date" = "2017-11-05"; 
     "schedule_date_id" = 5; 
     "schedule_description" = "Schedule 10"; 
     "schedule_end_time" = "14:00:00"; 
     "schedule_id" = 10; 
     "schedule_image" = "https://project-isdental-cammy92.c9users.io/api/images/schedules/day_2.png"; 
     "schedule_location" = Mumbai; 
     "schedule_start_time" = "11:00:00"; 
    } 
); 
} 
+0

目前还不清楚你想要做什么。你想尝试加入吗? –

+0

@DavidBerry我需要来自Schedule []的元素,Schedule []中的“schedule_id”应该匹配日期[] –

+0

中的“date_id”我想你想匹配'date_id'与'schedule_date_id'而不是'schedule_id',对吧? –

回答

1

要从datesArray

过滤使用 date_id schedules阵列
let dateId = 4 
let filteredSchedules = schedules.filter { schedule in 
    dates.contains(where: { dateId as! Int == schedule["schedule_id"] as! Int } 
)} 
print(filteredSchedules) 

要分配日期的CollectionView细胞

cell.titleLabel.text = datesArray[indexPath.row]["datesArray"] 
+0

这一项适用于我。 !谢谢 :) –

2

使用这样的:

斯威夫特4

let filteredSchedules = schedules.filter { schedule in 
    dates.contains(where: { $0["date_id"] as! Int == schedule["schedule_id"] as! Int } 
)} 
print(filteredSchedules) 

斯威夫特3

let filteredSchedules = schedules.filter { schedule in 
    dates.contains({ $0["date_id"] as! Int == schedule["schedule_id"] as! Int }) 
} 
print(filteredSchedules) 
+0

显示此错误:在调用 –

+0

更换答案的外来参数标签'其中:'。请检查 –

+0

,在$ 0处显示错误:无法为错误或模糊类型的值下标 –

0

用下面的代码尝试的上面的代码

let newArray = schedulesArray.filter { (schedulesDic) -> Bool in 
      return datesArray.contains(where: { (datesDic) -> Bool in 
       if schedulesDic["schedule_id"] as! Int == datesDic["date_id"] as! Int{ 
        return true 
       } 
       else { 
        return false 
       } 
      }) 
     } 
print(newArray) 

或短形式

let newArray = schedulesArray.filter { (schedulesDic) -> Bool in 
      datesArray.contains(where: { $0["date_id"] as! Int == schedulesDic["schedule_id"] as! Int }) 
     } 
print(newArray) 
+0

在$ 0处显示错误:无法为错误或模糊类型的值下标 –

+0

@ShikhaSharma代码已更新 – iPatel