Iphone 应用程序中的EXC_BAD_访问错误,Alamofire 3.1.2

Iphone 应用程序中的EXC_BAD_访问错误,Alamofire 3.1.2,iphone,swift,alamofire,Iphone,Swift,Alamofire,我正在运行Xcode 7.1,在9.1上有一个iOS设备,最新版本的Alamofire,我相信是3.1.2 我见过其他人也有类似的错误——也有——我的错误,但这些解决方案对我不起作用。在这些场景中起作用的解决方案似乎是删除DerivedData文件夹,但在我的情况下不起作用 问题是,当我在模拟器中运行时,我可以使用Alamofire发出web请求,但是当我在设备上安装应用程序时,我会出现以下错误(在图中) 我试过使用运行9.1、9.0.1和8.3的设备。当我尝试发出web请求时,所有这些设备都

我正在运行Xcode 7.1,在9.1上有一个iOS设备,最新版本的Alamofire,我相信是3.1.2

我见过其他人也有类似的错误——也有——我的错误,但这些解决方案对我不起作用。在这些场景中起作用的解决方案似乎是删除DerivedData文件夹,但在我的情况下不起作用

问题是,当我在模拟器中运行时,我可以使用Alamofire发出web请求,但是当我在设备上安装应用程序时,我会出现以下错误(在图中)

我试过使用运行9.1、9.0.1和8.3的设备。当我尝试发出web请求时,所有这些设备都会崩溃。我被困在这件事上,没有任何进展。直到几天前晚上我更新了我的pod文件中的所有pod和我的Xcode版本,这种方法才奏效

我是iOS开发的新手,所以如果您需要查看更多错误日志或类似的内容,请告诉我,我会尽力为您提供这些日志。感谢您的帮助

编辑:根据请求为
Alamofire.request
方法添加代码。还为引用的
Manager.sharedInstance.request
方法添加代码。这些是Alamofire库本身中的方法

// Alamofire.request
public func request(
    method: Method,
    _ URLString: URLStringConvertible,
    parameters: [String: AnyObject]? = nil,
    encoding: ParameterEncoding = .URL,
    headers: [String: String]? = nil)
    -> Request
{
    return Manager.sharedInstance.request(
        method,
        URLString,
        parameters: parameters,
        encoding: encoding,
        headers: headers
    )
}

// Manager.sharedInstance.request
public func request(
    method: Method,
    _ URLString: URLStringConvertible,
    parameters: [String: AnyObject]? = nil,
    encoding: ParameterEncoding = .URL,
    headers: [String: String]? = nil)
    -> Request
{
    let mutableURLRequest = URLRequest(method, URLString, headers: headers)
    let encodedURLRequest = encoding.encode(mutableURLRequest, parameters: parameters).0
    return request(encodedURLRequest)
}

一个问题是,
stringByAddingPercentEncodingWithAllowedCharacters
返回一个可选值,当您执行字符串插值时,字符串中将出现
optional(…)
。因此,当它试图从中创建URL时,它无疑是失败的。打印
uri
字符串,您将看到问题。例如,如果
searchTerm
“foo bar”
,则
uri将变成:

https://api.spotify.com/v1/search&q=Optional("foo%20bar")&type=artist,album,track
但这是不对的。添加一个
到表达式的末尾以将其展开:”

let searchTermEncoded = searchTerm.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
然后URI(很大程度上)是正确的

--

我建议您自己不要这样做(因为您使用的字符集不正确,即使您正确地展开了
searchTermEncoded
)。让Alamofire为您做到这一点:

let urlString = "https://api.spotify.com/v1/search"
let parameters = ["q" : searchTerm, "type" : "artist,album,track"]

Alamofire.request(.GET, urlString, parameters: parameters)
    .responseJSON { response  in
        guard response.result.error == nil else {
            print(response.result.error)
            return
        }

        print(response.result.value)
}

您能否发布
请求
方法的实际代码?你激活了异常的断点吗?不是这样的。我打印了,效果很好。即使我硬编码URL作为第二个参数,它仍然会爆炸。另外,请记住,这与模拟器中的预期完全一样,只有在我的设备上运行时才会出现错误。这是它的截图。好的,让我试试你的第二次编辑。无论如何,我更喜欢这种方法。不,也不是那样,但一旦我解决了问题,我会使用这种方法。谢谢你!这是一个新代码的屏幕截图,但有相同的错误。Rob-我创建了一个新项目,并将所有文件移动到新项目中,在重建所有内容后,我让所有内容都正常工作。仍然不确定错误是什么,但在这一点上我不在乎。谢谢你花时间来帮助我。顺便说一句,在新版本的Xcode中打开旧项目时,我有时会看到无法解释的错误。有时,在显示目标设置时,从“编辑器”菜单中选择“验证设置…”将修复此问题。但我很高兴你以这样或那样的方式解决了这个问题!