Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用Crashlytics错误日志修复我的崩溃_Swift_Logging_Crash_Report_Crashlytics - Fatal编程技术网

Swift 使用Crashlytics错误日志修复我的崩溃

Swift 使用Crashlytics错误日志修复我的崩溃,swift,logging,crash,report,crashlytics,Swift,Logging,Crash,Report,Crashlytics,我从Crashlytics得到一个错误日志,内容如下: Crashed: NSOperationQueue 0x1d003d5a0 (QOS: UNSPECIFIED) 0 (App Name) 0x100710fa4 specialized ViewController.(getHistoricalData(url : String, currency : String) -> ()).(closure #1) (ViewController.swift:1324

我从Crashlytics得到一个错误日志,内容如下:

Crashed: NSOperationQueue 0x1d003d5a0 (QOS: UNSPECIFIED)
0  (App Name)            0x100710fa4 specialized ViewController.(getHistoricalData(url : String, currency : String) -> ()).(closure #1) (ViewController.swift:1324)
1  (App Name)             0x1007029f8 ViewController.(getHistoricalData(url : String, currency : String) -> ()).(closure #1) (ViewController.swift)
2  (App Name)             0x100712178 partial apply for ViewController.(getHistoricalData(url : String, currency : String) -> ()).(closure #1) (ViewController.swift)
3  (App Name)             0x1006fd448 @callee_owned (@owned Data?, @owned URLResponse?, @owned Error?) -> ()NSData?NSData (ViewController.swift)
4  CFNetwork                      0x181fd1d68 __75-[__NSURLSessionLocal taskForClass:request:uploadFile:bodyData:completion:]_block_invoke + 32
5  CFNetwork                      0x181fea6bc __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 152
6  Foundation                     0x18241dba0 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 16
7  Foundation                     0x18235d894 -[NSBlockOperation main] + 72
8  Foundation                     0x18234d4c4 -[__NSOperationInternal _start:] + 848
9  libdispatch.dylib              0x1813c6a14 _dispatch_client_callout + 16
10 libdispatch.dylib              0x1814029c4 _dispatch_block_invoke_direct$VARIANT$armv81 + 280
11 libdispatch.dylib              0x1813c6a14 _dispatch_client_callout + 16
12 libdispatch.dylib              0x1814029c4 _dispatch_block_invoke_direct$VARIANT$armv81 + 280
13 libdispatch.dylib              0x181402878 dispatch_block_perform$VARIANT$armv81 + 104
14 Foundation                     0x18241f878 __NSOQSchedule_f + 376
15 libdispatch.dylib              0x1813c6a14 _dispatch_client_callout + 16
16 libdispatch.dylib              0x181403640 _dispatch_continuation_pop$VARIANT$armv81 + 420
17 libdispatch.dylib              0x181401fe8 _dispatch_async_redirect_invoke$VARIANT$armv81 + 596
18 libdispatch.dylib              0x1814082a4 _dispatch_root_queue_drain + 568
19 libdispatch.dylib              0x181408008 _dispatch_worker_thread3 + 112
20 libsystem_pthread.dylib        0x18166f06c _pthread_wqthread + 1268
21 libsystem_pthread.dylib        0x18166eb6c start_wqthread + 4
其中
(应用程序名)
对应于我的应用程序名。据我所知,错误发生在ViewController.swift的第1324行,在函数
getHistoricalData(url:String,currency:String)
中。 其作用如下:

func getHistoricalData(url: String, currency: String){
        var Currenturl = NSURL(string: url)


        if Reachability.isConnectedToNetwork() {

            URLSession.shared.dataTask(with: (Currenturl as URL?)!, completionHandler: {(data, response, error) -> Void in
                let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! NSDictionary
                if let jsonObj = jsonObj  {


                  // do some stuff
                }
            }).resume()

        }
    }
第1324行对应于
let jsonObj=try?JSONSerialization.jsonObject(带:data!,选项:.allowFragments)为!NSDictionary

我已经尝试了几种不同的解包方法来尝试阻止这次崩溃。最初我有一个类似于
的东西,如果让jsonObj=try?JSONSerialization.jsonObject(带:data!,选项:.allowFragments)作为?NSDictionary{
但同样的问题也发生了


这与我的解包方式有关吗?任何想法/指针都将不胜感激!

如果错误出现在
让jsonObj=try?JSONSerialization.jsonObject(with:data!,options:.allowFragments)as!NSDictionary
,则有两个明显的错误原因:

  • 无论出于何种原因,转换到
    NSDictionary
    失败
  • 强制展开
    数据
    失败
不要使用
强制展开服务器接收的数据,它可能为零。请改用以下代码:

guard let data = data, let jsonObj = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? NSDictionary else { // Handle error here }

如果错误出现在
让jsonObj=try?JSONSerialization.jsonObject(带有:data!,选项:.allowFragments)as!NSDictionary
,则有两个明显的错误原因:

  • 无论出于何种原因,转换到
    NSDictionary
    失败
  • 强制展开
    数据
    失败
不要使用
强制展开服务器接收的数据,它可能为零。请改用以下代码:

guard let data = data, let jsonObj = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? NSDictionary else { // Handle error here }

先生,您是一位优秀的绅士。这非常有效。非常感谢您的帮助。先生,您是一位优秀的绅士。这非常有效。非常感谢您的帮助。