Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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
Ios 应用函数时Swift exc\u错误访问_Ios_Json_Swift_Functional Programming - Fatal编程技术网

Ios 应用函数时Swift exc\u错误访问

Ios 应用函数时Swift exc\u错误访问,ios,json,swift,functional-programming,Ios,Json,Swift,Functional Programming,对了,伙计们,我被难住了 因此,我正在按照以下思路开发一个功能性json实现。事情进展得相当顺利,但我有一个问题在Xcode和Swift的当前版本和测试版本中都存在 我的解码逻辑从左侧的JSON字典中获取一个参数,并使用右侧提供的解码函数,使用“bind”运算符组合它们: return AdUnitDictionary.create <^> d["adRepeats"] >>> _JSONInt <*> d

对了,伙计们,我被难住了

因此,我正在按照以下思路开发一个功能性json实现。事情进展得相当顺利,但我有一个问题在Xcode和Swift的当前版本和测试版本中都存在

我的解码逻辑从左侧的JSON字典中获取一个参数,并使用右侧提供的解码函数,使用“bind”运算符组合它们:

return AdUnitDictionary.create <^>
    d["adRepeats"]          >>> _JSONInt        <*>
    d["adStartsAfter"]      >>> _JSONInt        <*>
    d["advertisingOn"]      >>> _JSONInt        <*>
    d["numberOfCards"]      >>> _JSONInt        <*>
    d["adUnitIdNonRetina"]  >>> _JSONString     <*>
    d["adUnitIdRetina"]     >>> _JSONString
因为“if let”行是调试器显示要抛出异常的地方。然而删除该块,并使用完全忽略其参数的函数,将导致在返回时引发异常

func _JSONString(object: JSON) -> String {
    return "" // EXC_BAD_ACCESS
}
我唯一能理解的是,应用的函数是nil,因为参数本身被检查为存在于bind的实现中。但是,这没有意义,因为调试器在抛出异常之前将其正确地放入目标函数中

另一个谜团是为什么数字解码成功而没有任何问题,即使它们只是具有不同类型专门化的字符串解码器的复写副本

有什么想法吗?

检查你的模式

let object: Int? = nil
if let object = object as? String {
    print("a")
} else {
    print("nil")
}
// prints nil


最后一个很有趣。。。我不敢相信,你有没有一个输入数据的例子可以可靠地再现这一点?看起来实际的问题可能不在您介绍的代码范围内。或者,我会怀疑实际崩溃发生在其他队列上。我会把这个问题简化成一个小程序来演示它。你找到解决方案了吗?当返回到泛型函数时,我的访问权限也不好。
func _JSONString(object: JSON) -> String {
    return "" // EXC_BAD_ACCESS
}
let object: Int? = nil
if let object = object as? String {
    print("a")
} else {
    print("nil")
}
// prints nil
let object: Int = 1
if let object = object as? String {
    print("a")
} else {
    print("nil")
}
// prints nil