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