Swift:数组包含(任何对象)错误无法转换类型。。。投掷->;布尔

Swift:数组包含(任何对象)错误无法转换类型。。。投掷->;布尔,swift,swift2,contains,Swift,Swift2,Contains,为什么使用Array.contains(AnyObject)检查此数组中是否存在结构对象。它会出现错误:“无法转换类型…throw->Bool” 这是因为您的DecorationPatternsData不符合equalable,这是包含(:)的工作要求 解决方案1: extension DecorationPatternsData: Equatable { } func ==(lhs: DecorationPatternsData, rhs: DecorationPatternsData)

为什么使用Array.contains(AnyObject)检查此数组中是否存在结构对象。它会出现错误:“无法转换类型…throw->Bool”


这是因为您的
DecorationPatternsData
不符合
equalable
,这是
包含(:)
的工作要求


解决方案1:

extension DecorationPatternsData: Equatable { }

func ==(lhs: DecorationPatternsData, rhs: DecorationPatternsData) -> Bool {
    return lhs.patternImageName == rhs.patternImageName
}
if decorationPatterns.contains({ $0 == pickedDecorationPattern }) {
    // Your code
}
现在
DecorationPatternsData
符合
equalable
,因此您可以使用:

if let pickedDecorationPattern = pickedDecorationPattern {
    if decorationPatterns.contains(pickedDecorationPattern) {
    // Your code
    }
}
解决方案2:

extension DecorationPatternsData: Equatable { }

func ==(lhs: DecorationPatternsData, rhs: DecorationPatternsData) -> Bool {
    return lhs.patternImageName == rhs.patternImageName
}
if decorationPatterns.contains({ $0 == pickedDecorationPattern }) {
    // Your code
}

在这里,您使用闭包来比较元素,返回
包含(:)
的bool,这是因为您的
装饰模式数据不符合
equalable
,这是
包含(:)
工作所必需的


解决方案1:

extension DecorationPatternsData: Equatable { }

func ==(lhs: DecorationPatternsData, rhs: DecorationPatternsData) -> Bool {
    return lhs.patternImageName == rhs.patternImageName
}
if decorationPatterns.contains({ $0 == pickedDecorationPattern }) {
    // Your code
}
现在
DecorationPatternsData
符合
equalable
,因此您可以使用:

if let pickedDecorationPattern = pickedDecorationPattern {
    if decorationPatterns.contains(pickedDecorationPattern) {
    // Your code
    }
}
解决方案2:

extension DecorationPatternsData: Equatable { }

func ==(lhs: DecorationPatternsData, rhs: DecorationPatternsData) -> Bool {
    return lhs.patternImageName == rhs.patternImageName
}
if decorationPatterns.contains({ $0 == pickedDecorationPattern }) {
    // Your code
}
这里使用闭包来比较元素,返回
contains(:)