Coredata没有提供有关获取请求的数据

时间:2016-07-18 07:46:10

标签: ios swift core-data

在我的应用程序中,当我启动我的应用程序,我从coredata获取数据。它没有给我数据。

但如果我没有关闭我的应用程序并在数据库中保存一些数据而没有关闭我的应用程序,如果我获取数据它给我一个数据。

当我关闭我的应用程序时。下次再没有给我数据。

这是我的代码

self.FetchAllLocalData({ (Available) in
                if (Available == "0")
                {
                    for ValueToSave in detailArray!
                    {
                        let entity = NSEntityDescription.insertNewObjectForEntityForName("RxOrder", inManagedObjectContext: moc)
                        print(ValueToSave.id!)

                        var medicinetype : String = ""
                        let Id : String = ValueToSave.id!.description
                        let isRx : String = ValueToSave.isRxMedicine!.description
                        print(ValueToSave.medicineTypeId)
                        if (ValueToSave.medicineTypeId != nil)
                        {
                            medicinetype = ValueToSave.medicineTypeId!
                        }
                        else
                        {
                            medicinetype = "0"
                        }

                        let medicineName : String = ValueToSave.name!
                        let orderId : String = ValueToSave.orderId!.description
                        let price : String = "0"
                        let quantity : String = ValueToSave.quentity!.description
                        let strength : String = ValueToSave.strength!


                        entity.setValue(Id, forKey: "medicineId")
                        entity.setValue(isRx, forKey: "isRxMedicine")
                        entity.setValue(medicinetype, forKey: "medicineType")
                        entity.setValue(medicineName, forKey: "productName")
                        entity.setValue(self.order_id_RX_Medicine!, forKey: "OrderId")
                        entity.setValue(price, forKey: "price")
                        entity.setValue(quantity, forKey: "quantity")
                        entity.setValue(strength, forKey: "strength")


                        do{
                            try moc.save()
                        }
                        catch {
                            fatalError("failed To Save Content\(error)")
                        }


                    }

这个用于获取

func  FetchAllLocalData(completion : (Available : String)-> Void)  {
     let request : NSFetchRequest = NSFetchRequest(entityName: "RxOrder")


    do{


        //request.predicate = NSPredicate(format: "orderId == \(order_id_RX_Medicine!)")
        let fetchedPerson = try moc.executeFetchRequest(request)
        DataAvailable = fetchedPerson as! [NSManagedObject]
        print(DataAvailable.count)

        if (DataAvailable.count > 0)
        {
            print(DataAvailable[0].valueForKey("orderId"))
            for OldData in DataAvailable {
                print(DataAvailable.count)

                print(order_id_RX_Medicine)
                print(OldData.valueForKey("orderId"))
                if (OldData.valueForKey("orderId")! as! String == order_id_RX_Medicine)
                {
                   completion(Available: "1")
                }
                else
                {
                    completion(Available: "0")
                }

            }

        }
        else
        {
           completion(Available: "0")
        }

    }

    catch
    {
        completion(Available: "0")
        fatalError("Something Went Wrong \(error)")
    }


}

3 个答案:

答案 0 :(得分:0)

首先,既然你在这里,你的代码中有print个语句,我会假设你看到了那些火,并且在应用程序运行时你没有收到错误。

因此,查看核心数据创建代码会很有帮助。

了解如何将moc放入创建代码中也很有帮助。创建代码是在AppDelegate中还是在其他地方?

您使用的是哪种持久性商店?

答案 1 :(得分:-1)

您必须在您的app delegate中尝试此操作:

    func applicationWillTerminate(application: UIApplication) {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    AppDelegate.shared.saveContext()
}

这将在应用终止之前保存您的数据

答案 2 :(得分:-1)

从哪里获得MOC?

如果您在使用CoreData时遇到问题,我创建了一个非常轻量级的库,以便更轻松地使用CoreData。

您可以在此处找到它:CoreDataHelper