如何检索满足条件swift的CoreData 2

时间:2016-03-28 12:46:22

标签: swift core-data swift2 nsfetchrequest executefetchrequest

我有一个包含以下字段的数据库

纬度经度标志 54.1425 98.2564 0 52.1036 94.1458 3 51.1569 92.1458 3 50.1326 91.1458 3 56.1236 93.1458 0

我需要检索标记为3的记录。

    let fetchRequest = NSFetchRequest()

    let appDelegate =
    UIApplication.sharedApplication().delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext

    let entityDescription = NSEntityDescription.entityForName("TABLE_LOCATION", inManagedObjectContext: managedContext)




    // Configure Fetch Request
    fetchRequest.entity = entityDescription


    do {
        let result = try managedContext.executeFetchRequest(fetchRequest)
        //print(result)


    } catch {
        let fetchError = error as NSError
        print(fetchError)
    }

我所拥有的只是上面的代码,它从表TABLE_LOCATION中检索所有记录,非常感谢任何代码或工作示例

谢谢!

3 个答案:

答案 0 :(得分:4)

您需要在fetchRequest中添加NSPredicate。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/

fetchRequest.predicate = NSPredicate(format: "flag == %@", "3")

答案 1 :(得分:0)

您可以使用NSPredicate并将其设置为fetchRequest。在执行获取请求之前,创建一个NSPredicate并将其设置为fetchRequest。

fetchRequest.predicate = NSPredicate(format: "flag = 3")

答案 2 :(得分:0)

将您的功能更改为:

func fetchDistinctDataUsingReq(predicate :NSPredicate) -> NSArray {
   let fetchRequest = NSFetchRequest()
   fetchRequest.predicate = predicate
   //Rest of your code
}

现在使用:

调用此函数
let predicate = NSPredicate(format: "flag == %@", 3)
self.fetchDistinctDataUsingReq(predicate)

这是一种更好的方法,可以在提取过程中重复使用。此外,您可以将CoreData Table作为参数与谓词一起传递以进行泛化。