2016-02-24 1 views
2

J'utilise coredata dans mon application. Je stocke 50 villes dans mes données de base. maintenant je veux utiliser la barre de recherche. qui fonctionnait bien avec array. et j'utilise le filtrage pour cela. voici mon code pour quecomment convertir [NSManagedObject] en nsmutable array (Swift)

arrcity.enumerateObjectsUsingBlock({ (obj, _, _) -> Void in 

      if let city : SelectCityModel = obj as? SelectCityModel 
      { 
       if city.city.lowercaseString.rangeOfString(self.searchtext.lowercaseString) != nil 
       { 
        self.searchcity?.addObject(city) 
       } 
      } 
     }) 

maintenant je veux faire même processus, mais j'ai [NSManagedObject] personnes. alors comment puis-je faire cela. ce sera facile s'il y a un moyen de convertir [NsmanagedObject] en nsmutablearry.

ici est mon code

if (people.count > 0) 
     { 

      people.enumerateObjectsUsingBlock({ (obj, _, _) -> Void in 

       if let city : SelectCityModel = obj as? SelectCityModel 
       { 
        if city.city.lowercaseString.rangeOfString(self.searchtext.lowercaseString) != nil 
        { 
         self.searchcity?.addObject(city) 
        } 
       } 
      }) 

     } 

mais ici les gens var = NSManagedObject alors comment puis-je convertir?

Répondre

1

NSMutableArray n'est pas associé à un tableau Swift.

Mais vous pouvez utiliser le tableau Swift avec un recenseur natif, par exemple

people.forEach { [unowned self] (object) ->() in 
    if object is SelectCityModel 
    { 
    if object.city.lowercaseString.rangeOfString(self.searchtext.lowercaseString) != nil 
    { 
     self.searchcity?.addObject(city) 
    } 
    } 
} 

Si les gens sont toujours [SelectCityModel] fonte à ce type dans la ligne chercher et omettre le contrôle de type dans la fermeture forEach. La vérification si people > 0 n'est pas nécessaire non plus. Un moyen plus pratique est d'utiliser les fonctions filter et map.

self.searchcity = people.filter({$0.city.lowercaseString.rangeOfString(self.searchtext.lowercaseString) != nil}).map{ $0.city } 
+0

c'est ma ligne chercher les résultats laisser = essayer moc.executeFetchRequest (personfetch) personnes = Résultats par [NSManagedObject] @vadian comment puis-je stocker ceci dans le tableau –

+0

Il suffit d'écrire 'people = results as! [SelectCityModel] 'alors vous pouvez supprimer le' objet est SelectCityModel' vérifier – vadian

+0

ses hommes qui ne travaillent pas est-il possible de lancer Nsmanagedobject à nsdictionary ?? –