У меня есть перечисление HTTP-методов:
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
И если я удалю self
и изменим условие на:
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
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Есть ли способ решить этот вопрос?
Update:
Он может проверить значение self.request.method
с помощью команды LLDB:
fr v self.request.method
И если я использую локальную константу для хранения значения, отладчик может быть остановлен в правильном положении:
// Use a local constant to store the HTTP method
let method = request.method
// Condition of breakpoint
method == HTTPMethod.POST
Обновление 2:
Я использую Xcode 6.3.1