Как я вижу содержимое этого объекта класса Swift в XCode после точки останова? - PullRequest
1 голос
/ 30 марта 2019

Я новичок и в Xcode, и в Swift (... и в серьезном программировании на Swift) и надеюсь, что кто-нибудь может помочь мне понять, как просмотреть / получить доступ к значениям этого объекта класса.

У меня есть этот код в моем ViewController.swift для вызова моего REST API (через AWS API Gateway) и я пытаюсь вывести result на консоль. Ясно, что все, что я здесь делаю, - это распечатка адреса объекта класса:

@IBAction func userInvokeApi(_ sender: UIButton) {
    print("You clicked invoke api...")
    let client = SVTLambdaGateClient.default()
    client.calcGet(operand2: "3", _operator: "+", operand1: "5").continueWith{ (task: AWSTask?) -> AnyObject? in
        if let error = task?.error {
            print("Error occurred: \(error)")
            return nil
        }

        if let result = task?.result {
            // Do something with result
            print("The result is... \(result)")
        }

        return nil
    }
}

Вот что печатает:

You clicked invoke api...
The result is... <AmplifyRestApiTest.Empty: 0x600002020770> {
}

(где AmplifyRestApiTest - это имя моего проекта Xcode. Хотя я НЕ использую AWS Amplify для построения этого проекта; в основном из-за проблем с его использованием.)

У меня есть Empty класс в Empty.swift, который является частью сгенерированного API-шлюзом iOS Swift SDK:

import Foundation
import AWSCore

@objcMembers
public class Empty : AWSModel {
    public override static func jsonKeyPathsByPropertyKey() -> [AnyHashable : Any]!{
    var params:[AnyHashable : Any] = [:]`
        return params
    }
}

Теперь, когда я устанавливаю точку останова в операторе print, это то, что я вижу:

enter image description here enter image description here enter image description here

Может кто-нибудь сказать мне, почему я не вижу значений, относящихся к этому объекту? Какова стратегия распаковки этого ответа API?

Я знаю, что я успешно вызываю REST API, потому что вижу (через журналы Cloudwatch), что он возвращает результат клиенту. Так что этот пост - просто моя попытка получить доступ к соответствующему объекту.

Еще одна деталь: я использую iOS Swift SDK, сгенерированный API-шлюзом, и следовал всем инструкциям по использованию SDK в моем проекте.

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

используйте команду lldb po для печати объекта.

(lldb) po @"lunar"
lunar
(lldb) p @"lunar"
(NSString *) $13 = 0x00007fdb9d0003b0 @"lunar"
0 голосов
/ 30 марта 2019

Я бы предложил просмотреть документы здесь ... https://cocoapods.org/pods/AWSCore#getting-started-with-swift

Вы импортировали соответствующие заголовки?

Надеюсь, это указывает на правильное направление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...