Wie kann NSMutableOrderedSet in ein generisches Array konvertiert werden?

7

Ich habe diese for-Schleife, p ist eine NSManagedObject , fathers ist eine to-many -Verbindung, also muss ich NSMutableOrderedSet auf [Family] umwandeln, aber es funktioniert nicht, warum?

%Vor%

    
János 22.11.2014, 11:21
quelle

2 Antworten

18

Sie können eine Array-Repräsentation der Menge über die array -Eigenschaft erhalten - dann können Sie sie auf den richtigen Typ reduzieren und einer Variablen zuweisen:

%Vor%

aber natürlich können Sie es auch direkt in der Schleife verwenden:

%Vor%     
Antonio 22.11.2014, 11:30
quelle
2

In diesem Fall sollte die einfache Lösung von Antonio verwendet werden. Ich würde das gerne noch ein wenig diskutieren. Wenn wir versuchen, eine Instanz von 'NSMutableOrderedSet' in einer 'for' -Schleife aufzuzählen, wird sich der Compiler beschweren:

  

error: Typ 'NSMutableOrderedSet' entspricht nicht dem Protokoll   'SequenzTyp'

Wenn wir

schreiben %Vor%

Der Compiler schreibt es in etwa so um:

%Vor%

'NS(Mutable)OrderedSet' hat keine 'generate()' -Methode, d. h. es entspricht nicht dem 'SequenceType' -Protokoll. Das können wir ändern. Zuerst brauchen wir einen Generator:

%Vor%

Jetzt können wir diesen Generator verwenden, um 'NSOrderedSet' konform zu 'SequenceType' :

zu machen %Vor%

'NS(Mutable)OrderedSet' kann jetzt in einer 'for' Schleife verwendet werden:

%Vor%

Wir könnten 'CollectionType' und 'MutableCollectionType' (letztere nur für 'NSMutableOrderedSet' ) weiter implementieren, damit 'NS(Mutable)OrderedSet' sich wie die Standard-Bibliothekssammlungen von Swift verhält.

Ich bin mir nicht sicher, ob der obige Code den Best Practices entspricht, da ich immer noch versuche, Details zu all diesen Protokollen zu verstehen.

    
Ivica M. 22.11.2014 12:48
quelle

Tags und Links