Im Moment verwendet mein Code NSPredate oder Sortierungsdeskriptor, um einfach nur einen Namen zu sammeln. Ich möchte, dass NSPredate alle Namen von a-z sortiert, das ist es.sort coreData fetch (swift4)
COREDATAHANDLER
class coreDataHandler: NSObject {
private class func getContext() -> NSManagedObjectContext{
let appDelegate = UIApplication.shared.delegate as! AppDelegate
return appDelegate.persistentContainer.viewContext
}
class func saveObject(username:String, password:String) -> Bool{
let context = getContext()
let entity = NSEntityDescription.entity(forEntityName: "User", in: context)
let managedObject = NSManagedObject(entity: entity!, insertInto: context)
managedObject.setValue(username, forKey: "username")
managedObject.setValue(password, forKey: "password")
do {
try context.save()
return true
} catch {
return false}
}
class func filterData() -> [User]? {
let conttext = getContext()
let fetchRequest:NSFetchRequest<User> = User.fetchRequest()
var user:[User]? = nil
var predicate = NSPredicate(format: "username contains[d] %@" ,"duke")
fetchRequest.predicate = predicate
do {
user = try conttext.fetch(fetchRequest)
return user
}catch {
return user
}
}
Viewcontroller
user = coreDataHandler.filterData()
for i in user! {
print("Judou : \(i.username!)")
}
NSPredicates werden verwendet, um Daten zu filtern - die Ergebnisse sortieren Sie müssen NSSortDescriptors verwenden, zB. 'fetch.sortDescriptors = [NSSortDescriptor (Schlüssel:" Benutzername ", aufsteigend: true)]' – pbasdf
@pbasdf würde ich das in das NSObject oder viewController einfügen? –
Sie können die Sortierdeskriptoren beim Abrufen angeben (was wahrscheinlich am besten ist) oder Sie können sie verwenden, um das Array zu sortieren, das vom Abruf zurückgegeben wird. Ich empfehle die erste, also würde der Code in Ihren CoreDataHandler gehen. – pbasdf