Trombone0904
Trombone0904

Reputation: 4258

request selected date of coredata in swift

good morning all together,

i would like to request all data of my coredata where the name field is "meyer"

at the moment, i do it like this way, but i think, this is not the best way to do this.

let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
var lebensmittel = [LM_ITEMS]()
var LM_ITEM:NSManagedObject!
var x :Int = 0
var NumberOfLM :Int = 0


func DatenAbrufen() {


    let fetchRequest = NSFetchRequest(entityName: "LM_ITEMS")

    if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [LM_ITEMS] {
        lebensmittel = fetchResults
        while x < fetchResults.count {

            var TEMP_LM_ITEM = lebensmittel[x]

            if TEMP_LM_ITEM.name == "meyer" {
                LM_ITEM = lebensmittel[x]
                NumberOfLM++
            }
         x++
        }
    }

    LebensmittelTable.reloadData()
}

Upvotes: 1

Views: 64

Answers (1)

Dan Nichols
Dan Nichols

Reputation: 469

Use a predicate with your NSFetchRequest instead of looping:

let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!
var lebensmittel = [LM_ITEMS]()
func DatenAbrufen() {
    var fetchRequest = NSFetchRequest(entityName: "LM_ITEMS")
    fetchRequest.predicate = NSPredicate(format: "name = %@", "meyer")
    if let fetchResults = managedObjectContext.executeFetchRequest(fetchRequest, error: nil) as? [LM_ITEMS] {
        lebensmittel = fetchResults
    }
    LebensmittelTable.reloadData()
}

Upvotes: 2

Related Questions