I am trying to check whether an array of tuples contains a certain tuple using the native contains()
method of Array
.
I have declared my two "equatable" functions as
public func ==(a: (clip1: Clip?, clip2: Clip?), b: (clip1: Clip?, clip2: Clip?)) -> Bool {
let clipa1 = a.clip1
let clipa2 = a.clip2
let clipb1 = b.clip1
let clipb2 = b.clip2
if clipa1 != nil && clipa2 != nil && clipb1 != nil && clipb2 != nil {
return (clipa1! == clipb1!) && (clipa2! == clipb2!)
}
else if clipa1 != nil && clipa2 == nil && clipb1 != nil && clipb2 == nil {
return (clipa1! == clipb1!)
} else {
return false
}
}
public func ==(a: Clip, b: Clip) -> Bool {
return a.id == b.id
}
However when I try these in this manner
for clip in tmp {
if !_filteredClips?.contains((clip1: clip.clip1, clip2: clip.clip2)) {
_filteredClips?.append(clip)
}
}
I am getting Cannot convert value of type '(clip1: Optional<Clip>, clip2: Optional<Clip>)' to expected argument type '@noescape ((clip1: Clip?, clip2: Clip?)) throws -> Bool'
What am I missing here?