En Java, nous avons:équivalent de Java LinkedHashSet à Swift
private Set<AutoComplete> hashList = new LinkedHashSet<>();
et:
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;
}
Ensuite, lorsque vous ajoutez des éléments à hashList, les valeurs en double autorisées coutume et la liste est une sorte.
Donc, mes questions est de savoir comment faire cela dans Swift ?!
Je l'ai déjà vu Does there exist within Swift's API an easy way to remove duplicate elements from an array?
et quand je passe tableau de saisie semi-automatique func uniq,
var namesAndIds : [AutoComplete] = []
(pour supprimer les doublons :)
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
}
J'ai ceci: valeur de type AutoComplete n'a aucun membre elemet
saisie semi-automatique:
class AutoComplete{
var id : String
var name : String
init(id: String,name: String) {
self.name = name
self.id = id
}
}
Que signifie exactement fonctionne pas? Montrez votre code Swift. –
@MartinR modifié – Hoven
Comment la saisie semi-automatique est-elle définie?- Comme toujours, un (petit) * exemple * autonome serait extrêmement utile. –