如何使用xcdatamodeld的获取请求?

时间:2016-11-12 09:56:28

标签: ios core-data request swift3 nsfetchrequest

我是核心数据的菜鸟,我无法在Apple开发者网站上找到我需要的帮助。

我在.xcdatamodeld文件中定义了一个抓取请求,但现在我无法找到如何使用它? 这是获取请求的定义: enter image description here

我认为获取请求以:

开头
let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Category")

但我不知道如何按名称使用获取请求。 (该项目是用Swift 3编写的)

3 个答案:

答案 0 :(得分:10)

Bharath的答案是如何在代码中创建和执行获取请求。这通常是你如何做到的。但是,它实际上并不是你问题的答案。如果你真的在核心数据模型中创建一个名为“allCategories”的获取请求,那就是你如何使用它:

let fetchRequest = self.managedObjectModel.fetchRequestTemplate(forName: "allCategories")

let fetchedObjects = self.managedObjectContext.execute(fetchRequest!)

答案 1 :(得分:-1)

以下代码可以帮助您参考。

let fetchRequest = NSFetchRequest()
        let entity = NSEntityDescription.entityForName("YOUR_ENTITY_NAME", inManagedObjectContext:kAppDelegate.managedObjectContext)
        fetchRequest.entity = entity
        fetchRequest.predicate = predicate

        var filterarray : Array = [NSManagedObject]()
        do {
            filterarray = try kAppDelegate.managedObjectContext.executeFetchRequest(fetchRequest) as! [NSManagedObject]
        } catch {
            filterarray = []
        }

答案 2 :(得分:-1)

如果您创建了一个实体用户,并且在其中创建了用户名和密码。对此的获取请求将是以下代码:

让appDel:AppDelegate =(UIApplication.sharedApplication()。委托为!AppDelegate)

    let context:NSManagedObjectContext = appDel.managedObjectContext

    let request = NSFetchRequest(entityName: "Users")

    request.returnsObjectsAsFaults = false

    request.predicate = NSPredicate(format: "username = %@ AND password = %@", username1.text!, password1.text!)

    let results:NSArray = try! context.executeFetchRequest(request)