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é