Ios 子字符串字符串并在它们之间进行比较

Ios 子字符串字符串并在它们之间进行比较,ios,swift,xcode,Ios,Swift,Xcode,我试图将一个字符串作为子字符串,然后比较两个字符串,依此类推 我试过这个: for matchdate in matches.data! { datesarray.append(matchdate.dateGregorian!) } datesarray = datesarray.reduce([], { $0.contains($1) ? $0 : $0 + [$1] }) datesarray = datesarray.sorted() for date in datesar

我试图将一个字符串作为子字符串,然后比较两个字符串,依此类推

我试过这个:

for matchdate in matches.data! {
    datesarray.append(matchdate.dateGregorian!)
}
datesarray = datesarray.reduce([], {
    $0.contains($1) ? $0 : $0 + [$1]
})
datesarray = datesarray.sorted()
for date in datesarray {
    matchesarray.removeAll()
    for match in matches.data! {
        if date.prefix(10) == match.dateGregorian?.prefix(10) {
            .....
        }
    }
}
这个很好用。。但是datearray不是uniq,我需要先将其子串,如下所示:

for matchdate in matches.data! {
    datesarray.append(String(matchdate.dateGregorian!.prefix(10)))
}
datesarray = datesarray.reduce([], {
    $0.contains($1) ? $0 : $0 + [$1]
})
datesarray = datesarray.sorted()
for date in datesarray {
    matchesarray.removeAll()
    for match in matches.data! {
        if date == String(match.dateGregorian!.prefix(10)) {
            .....
        }
    }
}
但这不会有任何作用!我没有得到任何错误,但结果没有显示


为什么??如何解决这个问题?

正如@vadian所说。。我刚刚将它们转换为日期:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.locale = Locale(identifier: "en")
let date = dateFormatter.date(from:matchdate.dateGregorian!)!
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day], from: date)
let finalDate = calendar.date(from:components)
然后将它们进行如下比较:

if matchdate == finalDate{
 .....
}

问题解决了,一切都很顺利:)

你想找什么?比较前缀的原因是什么?另外,如果您想要唯一的匹配项,您可以创建一个包含所有匹配项的
Set
(而不是使用
reduce
检查元素是否存在并添加到结果数组中)@DavidRönnqvist如果前缀匹配,那么我想将它们添加到数组中…@DavidRönnqvist你能举个例子吗?在处理日期时,我想有比比较(子)字符串更有效的方法。