Javaには次のものがあります。
private Set<AutoComplete> hashList = new LinkedHashSet<>();
と:
public class AutoComplete {
private String name;
private String id;
//...geters and setters
@Override
public boolean equals(Object o) {
if (o instanceof AutoComplete) {
AutoComplete autoComplete = (AutoComplete) o;
if (name.equals(autoComplete.name) && id.equals(autoComplete.id))
return true;
}
return false;
}
@Override
public int hashCode() {
int hash = 17;
int hashMultiplikator = 79;
try {
hash = hashMultiplikator * hash
+ getId().hashCode();
} catch (java.lang.Exception e) {
e.printStackTrace();
MLogger.logException("autocomplete id can't be null", e);
}
return hash;
}
次に、項目をhashListに追加すると、値の重複は許可されず、リストは並べ替えられます。
だから私の質問は、Swiftでこれを行う方法ですか?!
私はすでに見ました 配列から重複した要素を削除する簡単な方法が Swift の API 内に存在しますか?
AutoComplete の配列を func uniq に渡すと、
var namesAndIds : [AutoComplete] = []
(重複を削除するため:)
namesAndIds.appendContentsOf(SingletonMappingContacts.sharedInstance.autoComplete)
namesAndIds = uniq(namesAndIds)
func uniq<S : SequenceType, T : Hashable where S.Generator.Element == T>(source: S) -> [T] {
var buffer = [T]()
var added = Set<T>()
for elem in source {
if !added.contains(elem) {
buffer.append(elem)
added.insert(elem)
}
}
return buffer
}
私はこれを持っています: タイプ AutoComplete の値にはメンバー要素がありません
オートコンプリート:
class AutoComplete{
var id : String
var name : String
init(id: String,name: String) {
self.name = name
self.id = id
}
}