【发布时间】:2017-06-22 13:36:14
【问题描述】:
编辑:@vacawama 已经解决了这个问题。但是,如果您正在寻找NSObject classes 的答案,您应该实现isEqual 函数,即NSObjectProtocol。否则你会得到一个错误说:“Redundant conformance of 'classname' to protocol 'Equatable'”
您可以查看这里了解详情:Swift 2.2, Contains Method not working
在 swift 中,我如何检查一个对象是否在数组中?
我有一个这样的简单课程;
class Test: {
private var _number: Int!
private var _type: String!
var number: Int {
return _number
}
var type: String {
return _type
}
init (number: Int, type: String) {
self._number = number
self._type = type
}
}
我也有这门课;
class TestRandom {
private let _numberArr: [Int] = [1,2,3,4,5,6,7,8,9,10]
private let _typeArr: [String] = ["x","y","z"]
public private(set) var _testArr: [Test] = []
private var _randomTest: Test!
func randomTestPicker () {
repeat {
let randomNumber = Int(arc4random_uniform(UInt32(self._numberArr.count)))
let randomType = Int(arc4random_uniform(UInt32(self._typeArr.count)))
self._randomTest = Test(number: self._numberArr[randomNumber], type: self._typeArr[randomType])
} while self._testArr.contains(_randomTest)
}
}
我想做的就是挑选不同的对象。假设我在 _testArr 中有 x2、y4、x6、z3、z8、y2。当我调用 randomTestPicker 时,它不应该选择 x2 或 z8。因为它们已经在数组中了。
如您所见,我已尝试包含。但是它对我不起作用。我可以为此目的使用任何解决方案吗?或者最好的方法是什么?
编辑:我尝试了self._testArr.contains{$0 === _randomTest},但都没有工作。
【问题讨论】:
标签: arrays swift random contains