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