enum httpMethod: String { case GET = "GET" case POST = "POST"}
我有一个请求类和一个请求包装类:
class Request { let method: httpMethod = .GET}class RequestWrapper { let request: Request func comparetoRequest(incomingRequest: NSURLRequest) -> Bool { // Next line is where the conditional breakpoint set. return request.method.rawValue == incomingRequest.httpMethod }}
return request.method.rawValue == incomingRequest.httpMethod
条件:
self.request.method == httpMethod.POST
然后调试器停在行上并显示一条错误消息:
Stopped due to an error evaluating condition of breakpoint 1.1: "self.request.method == httpMethod.POST"Couldn't parse conditional Expression:<EXPR>:1:1: error: use of unresolved IDentifIEr 'self'self.request.httpMethod == httpMethod.POST
如果我删除自己,并将条件更改为:
request.method == httpMethod.POST
错误信息如下:
Stopped due to an error evaluating condition of breakpoint 1.1: "request.method == httpMethod.POST"Couldn't parse conditional Expression:<EXPR>:1:1: error: Could not find member 'method'request.method == httpMethod.POST^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
有没有办法解决这个问题?
更新:
可以使用LLDB命令检查self.request.method的值:
fr v self.request.method
如果我使用本地常量来存储值,调试器可以停在正确的位置:
// Use a local constant to store the http methodlet method = request.method// Condition of breakpointmethod == httpMethod.POST
更新2:
我正在使用Xcode 6.3.1
解决方法 这显然是一个lldb BUG.你没有提到你正在使用什么版本的工具.如果您没有使用6.3.1或更高版本,请再试一次.如果您仍然遇到问题,请提交 http://bugreporter.apple.com的错误.注意,框架var和expr是相当不同的野兽. frame var仅打印局部变量的值,直接使用DWARF调试信息,但不是表达式求值程序.所以,例如,它不够了解==.我想像如果你这样做:
(lldb) self.request.method == httpMethod.POST
当在那个断点停止时,你会看到相同的效果.
表达式解析器必须扮演一个额外的技巧,作为你的类的方法(通过自我等获得透明的引用),而且这是一个有点棘手的事情.显然我们没有在你的情况下正确地做这个工作.
总结以上是内存溢出为你收集整理的ios – 如何设置Swift中有条件断点的条件与自我和枚举?全部内容,希望文章能够帮你解决ios – 如何设置Swift中有条件断点的条件与自我和枚举?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)