Ich bin derzeit lernen und eine grundlegende Entscheidung App erstellen. Die Grundlagen der App bestehen darin, Benutzereingaben für eine Kategorie zu machen, die sie machen möchten, und dann alle Dinge, mit denen diese Kategorie gefüllt werden soll.So nehmen Sie Core Data und filtern Sie es mit NSPredicate Swift
Jetzt möchte ich die Ergebnisse auf einer Tabellenansicht anzeigen, die funktioniert, aber ich auch, was auf jede einzelne Kategorie, die sie kürzlich verwendet haben, zu klicken und in der Lage sein, die Dinge zu sehen, die sie unter jeder Kategorie platziert. Ich habe alles, was in den Core Data gespeichert war, bekommen, aber jetzt versuche ich, mit NSPredate herauszufiltern, was ich brauche. Wenn ich die App starte, gibt es nichts in der Tabellenansicht.
mainName Ich habe von einem anderen View-Controller übergeben, um zu erfassen und festzulegen, was der Name der Kategorie war, um die Daten zu filtern. Ich habe versucht, es im Prädikat als Filter zu verwenden.
Ich weiß nicht, ob das, was ich tue, richtig ist, aber Hilfe wäre großartig. Dies ist ein unabhängiges Studienprojekt, das ich mache, um meinen Abschluss zu machen und alles, was ich weiß, ist Autodidakt. Wenn das, was ich habe, völlig falsch ist, sag es mir bitte. Dies ist nur eine von Hunderten von verschiedenen Möglichkeiten, wie ich versucht habe, dies richtig zu machen.
@IBOutlet weak var tableview: UITableView!
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return whats.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell
let Doing = whats[indexPath.row]
cell.textLabel!.text = Doing.valueForKey("what") as? String
return cell
}
func loadData(){
let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate
if let context = appDelegate?.managedObjectContext{
let fetchRequest = NSFetchRequest(entityName: "Doing")
let namePredicate = NSPredicate(format: "namesR.noun = '\(mainName)'")
(whats as NSArray).filteredArrayUsingPredicate(namePredicate)
fetchRequest.predicate = namePredicate
do {
let results =
try context.executeFetchRequest(fetchRequest)
whats = results as! [NSManagedObject]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
}
override func viewDidLoad() {
super.viewDidLoad()
loadData()
}
Es gibt mir einen Fehler auf dem self.sharedContext warum würde das sein ?? Es besagt, dass im VC kein Mitglied 'sharedContext' vorhanden ist. – NSchaffer428
Ersetzen Sie 'self.sharedContext' durch' self.context', das sich auf den Kontext bezieht, den Sie in Ihrem Code deklariert haben. Oder 'let context = UIApplication.sharedApplication(). Delegate.sharedManagedObject' – MikaelM
In Ordnung jetzt sagt es, dass UIApplication nicht sharedApplication(), auch wenn ich let context = UIApplication.sharedApplication() verwenden. SharedManagedObject – NSchaffer428