Cocoa 错误 3840 操作无法完成

Posted

技术标签:

【中文标题】Cocoa 错误 3840 操作无法完成【英文标题】:Cocoa error 3840 The operation couldn’t be completed 【发布时间】:2014-07-19 07:19:44 【问题描述】:

我正在尝试连接到返回 json 字符串的本地主机 API(我需要与 ios swift 应用程序一起构建)。 API 使用 Laravel 4 框架编写。

这里是连接和接收代码的 iOS Swift 代码:

func checkEmail() 
    var request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:3306/laravel/rojectapi/checkEmail"))
    var session = NSURLSession.sharedSession()

    request.HTTPMethod = "POST"

    var params = ["email":"myemail@me.com", "password":"password"] as Dictionary

    var err: NSError?
    request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")

    var task = session.dataTaskWithRequest(request, completionHandler: data, response, error -> Void in
        println("Response: \(response)")
        var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
        println("Body: \(strData)")
        var err: NSError?
        var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as NSDictionary

        println("hey")

        if(err) 
            println(err!.localizedDescription)
        
        else 
            var success = json["success"] as? Int
            println("Success: \(success)")
        
        )

    task.resume()


Laravel php 路线:

Route::post('/checkEmail', array(
'as' => 'checkEmail',
'uses' => 'FrontEndController@checkEmail'
));

然后是带有 checkEmail 方法的前端控制器:

public function checkEmail() 

    $validator = Validator::make(Input::all(), array(
        'email' => 'required|unique:users|email'
    ));

    if($validator->fails()) 
        return $validator->messages()->toJson();
     else 
        return Response::json(array('success' => true));
    


我没有正确连接到服务器吗?我需要在连接到笔记本电脑的 iPhone 5s 以及模拟器中执行此操作。我已经在 URL 中尝试了name.locallocalhost:<post>name.local:<post>

更新

我从this tutorial得到代码

【问题讨论】:

strData的内容发布到调试器中。 【参考方案1】:

要么传递 NSJSONReadingAllowFragments(在 Swift 中为 .AllowFragments),要么正确格式化 JSON。

简单的 google 搜索显示错误 3840 是由于将格式不正确的 JSON 传递给 iOS JSON 解析器造成的。

【讨论】:

是的,我在发帖前也用谷歌搜索过。但是不知道如何解决它,因为我对开发非常陌生。如何将 `NSJSONReadingAllowFragments 传递给 JSON? @josh 正如你通过.MutableLeaves. 我将.AllowFragments 单独传递给它,而不是.MutableLeaves,但它们不起作用。我仍然得到同样的错误 @josh 那么你的 JSON 不正确。在您的问题中发布strData 的内容。 我打开了 charles 代理服务器(监控代理调用),它显示响应是 J 5.5.380.JiTE?J8ˇ˜ÄvnCDhb4/u%Tmysql_native_password!ˇÑ#08S01Got packets out of order,这可以解释为什么它没有读取为 JSON。因为它不是 JSON。我该如何解决这个问题?【参考方案2】:

如果 API 期望您提供一些数据,而您无法发送或 API 未接收到该数据,则会发生这种情况,请尝试回显 API 接收到的参数作为对 iOS 的响应请求,如果您的 APi 实现中有一些错误,也可能会发生,尽管您可以在 Web 控制台中看到此错误。

【讨论】:

【参考方案3】:

当我将语言添加到项目中的本地化时,我遇到了这个错误。当我添加语言时,必须从“可本地化的字符串”更改为“界面构建器故事板”。我的意思是iOS应用程序的项目。可以帮到你。

【讨论】:

以上是关于Cocoa 错误 3840 操作无法完成的主要内容,如果未能解决你的问题,请参考以下文章

Error Domain = NSCocoaErrorDomain Code=3840 "操作无法完成。(Cocoa 错误 3840。)

json数据快速返回nil

Domain=NSCocoaErrorDomain Code=3840 "操作无法完成

PHPhotoLibrary 错误:performChanges 中的内容编辑导致错误“无法完成操作。(Cocoa 错误 -1。)”

checkResourceIsReachableAndReturnError 总是返回 Domain=NSCocoaErrorDomain Code=4 "操作无法完成。(Cocoa 错误

cocoa错误3840怎么解决