Ce que je souhaite mettre en œuvre:
class func getSomeObject() -> [SomeObject]? {
let objects = Realm().objects(SomeObject)
return objects.count > 0 ? objects : nil
}
Comment puis-je retourner un objet comme [SomeObject]
si Results
?
Bizarre, la réponse est très simple. Voici comment je le fais:
let array = Array(results) // la fin
Array
construit avec l'itérateur de résultats.Si vous devez absolument convertir votre
Results
enArray
, gardez à l'esprit qu'il y a une surcharge de performances et de mémoire, carResults
c'est paresseux. Mais vous pouvez le faire en une seule ligne, commeresults.map { $0 }
dans swift 2.0 (oumap(results) { $0 }
en 1.2).la source
map { $0 }
reviendraLazyMapRandomAccessCollection
dans Swift 3, donc la réponse @Mazyod est meilleure.J'ai trouvé une solution. Extension créée sur les résultats.
et en utilisant comme
la source
for var i = 0; i < count; i++
devrait être remplacé parfor i in 0 ..< count
Avec Swift 4.2, c'est aussi simple qu'une extension:
Toutes les informations génériques nécessaires font déjà partie de
Results
ce que nous étendons.la source
C'est une autre façon de convertir
Results
en Array avec une extension avec Swift 3 en une seule ligne.Pour Swift 4 et Xcode 9.2
Avec Xcode 10
flatMap
est obsolète, vous pouvez l'utilisercompactMap
pour le mappage.la source
Swift 3
Usage
Alternative: utiliser des génériques
la source
ce n'est pas une bonne idée de convertir Results en Array, car Results est paresseux. Mais si vous avez besoin d'essayer ceci:
mais le meilleur moyen est de transmettre les résultats là où vous en avez besoin. Vous pouvez également convertir les résultats en liste au lieu de tableau.
si la première fonction ne fonctionne pas, vous pouvez essayer celle-ci:
la source
Je ne sais pas s'il existe un moyen efficace de le faire.
Mais vous pouvez le faire en créant un tableau Swift et en l'ajoutant à la boucle.
Si vous pensez que c'est trop lent. Je vous recommande de faire circuler
Results
directement l'objet Realm .la source
Donc, vous pouvez utiliser comme:
la source
Solution pour Swift 4, Realm 3
Maintenant, la conversion peut être effectuée comme ci-dessous
la source
la source