J'essayais de filtrer mon éventail d'objets par l'une de ses propriétés. essayé beaucoup de solutions, mais il faisait une erreur après que je commençais à taper
// ma classe de modèle p> // ViewController
// Ceci est ma méthode de déléguée Textfield p>
3 Réponses :
Le pont Cast to Mais c'est Swift, il n'est pas nécessaire d'utiliser note: p> apparemment tous les livres ont Nsarray code> Pour appliquer le prédicat nécessite une conformité de la valeur clé des propriétés en ajoutant l'attribut @OBJC code> et la classe doit être même une sous-classe de NsObject code>. nspredicate code> et nsarray code>. Cette syntaxe natale fait le même p> nom code> et id Code> Alors déclarez l'objet sous forme de structure avec des éléments constants non facultatifs et retirez la nommée redondante. L'initialiseur est gratuit. P> struct Book {
let id : Int
let name : String
}
var myArray = [Book(bookName:"book1", bookId:23),Book(bookName:"book2", bookId:53),Book(bookName:"book3", bookId:43)]
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
var lastCharactar = string
var textFieldText = myTextField.text! + lastCharactar
let arr = myArray.filter{ $0.bookName!.range(of: textFieldText, options: .caseInsensitive) != nil }
print(arr)
return true
}
struct Book {
var bookName : String?
var bookId : Int?
}
Le tableau SWIFT n'a pas besoin de prédicat pour filtrer son contenu. SWIFT Array a la méthode de filtre pour filtrer la matrice. Par exemple: Remarque: une structure est un type de valeur dont la valeur est copiée lorsqu'elle est attribuée à une variable ou à une constante ou lorsqu'elle est transmise à une fonction, tandis que la classe est le type de référence dont les valeurs ne sera pas copié par défaut. p> p>
Duplicaté possible de Swift 4 "Cette classe n'est pas une valeur clé Conforme de codage "
Dupliqué possible de Swift 4: Nspredicate de Uitextfield et une matrimonie de Objet personnalisé