Was ich implementieren möchte:
class func getSomeObject() -> [SomeObject]? {
let objects = Realm().objects(SomeObject)
return objects.count > 0 ? objects : nil
}
Wie kann ich ein Objekt zurückgeben, als [SomeObject]
ob Results
?
Seltsam, die Antwort ist sehr einfach. So mache ich das:
let array = Array(results) // la fin
Array
der mit dem Ergebnisiterator erstellt wurde.Wenn Sie unbedingt Ihre konvertieren
Results
zuArray
denken , dass es einen Leistungs- und Speicheraufwand gibt, da dieserResults
faul ist. Sie können dies jedoch in einer Zeile tun, wieresults.map { $0 }
in Swift 2.0 (odermap(results) { $0 }
in 1.2).quelle
map { $0 }
wirdLazyMapRandomAccessCollection
in Swift 3 zurückkehren, daher ist die @ Mazyod-Antwort besser.Ich habe eine Lösung gefunden. Erweiterung für Ergebnisse erstellt.
und mit like
quelle
for var i = 0; i < count; i++
sollte ersetzt werden durchfor i in 0 ..< count
Mit Swift 4.2 ist es so einfach wie eine Erweiterung:
Alle benötigten Generika-Informationen sind bereits ein Teil,
Results
den wir erweitern.quelle
Dies ist eine weitere Möglichkeit,
Results
in Array mit einer Erweiterung mit Swift 3 in einer einzelnen Zeile zu konvertieren .Für Swift 4 und Xcode 9.2
Mit Xcode 10
flatMap
veraltet ist , können Sie verwendencompactMap
für die Zuordnung.quelle
Swift 3
Verwendung
Alternative: Generika verwenden
quelle
Es ist keine gute Idee, Ergebnisse in Array zu konvertieren, da Ergebnisse faul sind. Aber wenn Sie es brauchen, versuchen Sie Folgendes:
Besser ist es jedoch, die Ergebnisse überall dort weiterzugeben, wo Sie sie benötigen. Sie können Ergebnisse auch in Liste anstelle von Array konvertieren.
Wenn die erste Funktion nicht funktioniert, können Sie diese ausprobieren:
quelle
Ich bin mir nicht sicher, ob es dafür einen effizienten Weg gibt.
Sie können dies jedoch tun, indem Sie ein Swift-Array erstellen und es in die Schleife einfügen.
Wenn Sie das Gefühl haben, dass es zu langsam ist. Ich empfehle Ihnen, das Realm-
Results
Objekt direkt weiterzugeben .quelle
Sie können also Folgendes verwenden:
quelle
Lösung für Swift 4, Realm 3
Jetzt kann die Konvertierung wie folgt durchgeführt werden
quelle
quelle