严重的应用程序核心数据错误Swift3

时间:2017-07-28 11:30:56

标签: ios core-data swift3

我正在尝试从多个apis获取数据并将其保存到我的coredata数据库中。之前它曾经十次出现过一次。但现在我每次都得到它。

我创建了一个DispatchGroup并试图逐个点击api。以下是我的代码。

 let group = DispatchGroup()

    group.enter()
    SharedFunctions.getCourseSessions {
        print("Course Session Done")
        group.leave()
    }
    group.enter()
    SharedFunctions.getCourseContent {

        print("Course Content Done")
        group.leave()
    }

    group.enter()
    SharedFunctions.getCourseQuiz {
        print("Course Quiz Done")
        group.leave()
    }
     group.notify(queue: DispatchQueue.global(qos: .background)) {
        print("All async calls were run!")

        DispatchQueue.main.async {
            ACProgressHUD.shared.hideHUD()


            completrion()
        }
    }

以下是我从api

获取和保存数据
class func getCourseSessions(completion: @escaping () -> ()) {

    let param = "module=getCourseSessions&userid=\(User.uId)&Akey=\(User.akey)&schedule_course_id=\(User.scheduleCourseId)"

    SharedFunctions.callWebServices(url: URLS.Base_URL, methodName: "POST", parameters: param, istoken: false, tokenval: "", completion: { (jsonDict) in

        print(jsonDict)

        DispatchQueue.main.async {

        if ((jsonDict.value(forKey: "message") as! NSDictionary).value(forKey: "success") as! String) == "true" {
            SharedGlobalVariables.arrayCourseSessions = (((jsonDict.value(forKey: "message") as AnyObject).value(forKey: "data") as AnyObject).value(forKey: "result")) as! NSMutableArray
            print(SharedGlobalVariables.arrayCourseSessions.count)
            //   DispatchQueue.main.async {
            SharedGlobalVariables.LoginBool = true
            // get a reference to the app delegate
            if #available(iOS 10.0, *) {

                let appDelegate = UIApplication.shared.delegate as! AppDelegate
                print(SharedGlobalVariables.arrayCourseSessions.count)

                for j in 0...SharedGlobalVariables.arrayCourseSessions.count - 1 {

                    let managedContext = appDelegate.persistentContainer.viewContext
                    let entity = NSEntityDescription.entity(forEntityName: "Course_Sessions", in: managedContext)

                    let courseSessionsScreen = Course_Sessions(entity: entity!, insertInto: managedContext)

                    if let arrData = SharedGlobalVariables.arrayCourseSessions[j] as? NSDictionary {


                        if let courseId = arrData.value(forKey: "course_id") as? Int16 {

                            courseSessionsScreen.course_id = courseId
                        }

                        if let userId = arrData.value(forKey: "user_id") as? Int16 {

                            courseSessionsScreen.user_id = userId
                        }


                        if let enableNextScreenSequence = arrData.value(forKey: "enable_nextscreen_sequence") as? Int16 {

                            courseSessionsScreen.enable_nextscreen_sequence = enableNextScreenSequence
                        }
                    }

                   do {
                        try managedContext.save()

                        //         getCourseSessionProperties()

                    } catch let error as NSError {

                        print(error)
                    }
                }

            } else {
                // Fallback on earlier versions
            }

            //}

        }

        completion()

        }
    })

}

崩溃应用程序崩溃没有特别的地方。它崩溃任何像上面的方法我通过所有apis。

获取此错误:

     Error Domain=NSCocoaErrorDomain Code=132001 "(null)" UserInfo={message=attempt to recursively call -save: on the context aborted, stack trace=(
0   CoreData                            0x0000000111ff3892 -[NSManagedObjectContext save:] + 306
1   Tuneem                              0x000000010f64046c _TFFFZFC6Tuneem15SharedFunctions26getCourseSessionPropertiesFT10completionFT_T__T_U_FCSo12NSDictionaryT_U_FT_T_U_FT_T_ + 60
2   Tuneem                              0x000000010f629197 _TTRXFo___XFdCb___ + 39
3   CoreData                            0x000000011200cb52 developerSubmittedBlockToNSManagedObjectContextPerform + 178
4   libdispatch.dylib                   0x000000011bf0205c _dispatch_client_callout + 8
5   libdispatch.dylib                   0x000000011bee094f _dispatch_queue_serial_drain + 221
6   libdispatch.dylib                   0x000000011bee1669 _dispatch_queue_invoke + 1084
7   libdispatch.dylib                   0x000000011bee1b32 _dispatch_queue_override_invoke + 654
8   libdispatch.dylib                   0x000000011bee3ec4 _dispatch_root_queue_drain + 634
9   libdispatch.dylib                   0x000000011bee3bef _dispatch_worker_thread3 + 123
10  libsystem_pthread.dylib             0x000000011c299712 _pthread_wqthread + 1299
11  libsystem_pthread.dylib             0x000000011c2991ed start_wqthread + 13
)}
    Error Domain=NSCocoaErrorDomain Code=132001 "(null)" UserInfo=.      {message=attempt to recursively call -save: on the context aborted, stack trace=(
0   CoreData                            0x0000000111ff3892 -[NSManagedObjectContext save:] + 306
1   Tuneem                              0x000000010f64046c _TFFFZFC6Tuneem15SharedFunctions26getCourseSessionPropertiesFT10completionFT_T__T_U_FCSo12NSDictionaryT_U_FT_T_U_FT_T_ + 60
2   Tuneem                              0x000000010f629197 _TTRXFo___XFdCb___ + 39
3   CoreData                            0x000000011200cb52 developerSubmittedBlockToNSManagedObjectContextPerform + 178
4   libdispatch.dylib                   0x000000011bf0205c _dispatch_client_callout + 8
5   libdispatch.dylib                   0x000000011bee094f _dispatch_queue_serial_drain + 221
6   libdispatch.dylib                   0x000000011bee1669 _dispatch_queue_invoke + 1084
7   libdispatch.dylib                   0x000000011bee1b32 _dispatch_queue_override_invoke + 654
8   libdispatch.dylib                   0x000000011bee3ec4 _dispatch_root_queue_drain + 634
9   libdispatch.dylib                   0x000000011bee3bef _dispatch_worker_thread3 + 123
10  libsystem_pthread.dylib             0x000000011c299712 _pthread_wqthread + 1299
11  libsystem_pthread.dylib             0x000000011c2991ed start_wqthread + 13

)}

试着在过去几天不知道解决它,任何帮助都会受到欢迎。

0 个答案:

没有答案