DynamoDBObjectMapper.load() в iOS Swift не работает с записью массива

Я пытаюсь загрузить записи таблицы, используя load функция от DynamoDBObjectMapper, в viewDidLoad функции, записи таблицы загружаются, а затем сохраняются в awnings массив типа Awning, (awnings а также dynamoDBObjectMapper объявлены вне viewDidLoad как глобальные переменные в tableViewController.)

  var awning = Awning()

  dynamoDBObjectMapper.load(Awning.self, hashKey: 0, rangeKey: nil).continueWith(block:{ (task:AWSTask<AnyObject>!) -> Any? in
            if let error = task.error as NSError? {
                print("The request failed. Error: \(error)")
            } else if let result = task.result as? Awning {
                awning?.Awning_Number = result.Awning_Number!
                awning?.Arduino_IP_Addr = String(result.Arduino_IP_Addr!)
                awning?.Arduino_MAC_Addr = String(result.Arduino_MAC_Addr!)
                awning?.Connection_Status = String(result.Connection_Status!)
                awning?.Current_Angle_Position = result.Current_Angle_Position!
                awning?.Solar_Optimization = String(result.Solar_Optimization!)
                awning?.Timezone = String(result.Timezone!)
                self.awnings.append(awning!)
            }
            return nil
  })

Каждая запись в массиве будет загружена в TableViewCell, (Все это в UITableViewController.)

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "AwningCell")!
    let awning = awnings[indexPath.row]
    cell.textLabel!.text = awning.Arduino_MAC_Addr!

    return cell
}

В настоящее время я тестирую это, просто загружая одну запись. Когда я делаю это с помощью функции загрузки, сцена MyAwnings не показывает ячеек. Однако, когда я заменяю запрос на загрузку жестко закодированной информацией о записи в таблице, ячейка фактически появляется.

var awning = Awning()

awning?.Awning_Number = 0
awning?.Arduino_IP_Addr = "71.2.137.80"
awning?.Arduino_MAC_Addr = "0x90-0xA2-0xDA-0x11-0x28-0x95"
awning?.Connection_Status = "Connected"
awning?.Current_Angle_Position = 30
awning?.Solar_Optimization = "On"
awning?.Timezone = "UTC -5:00"

awnings.append(awning!)

Для справки, вот Awning учебный класс.

class Awning: AWSDynamoDBObjectModel, AWSDynamoDBModeling {
    var Awning_Number: NSNumber?
    var Arduino_MAC_Addr: String?
    var Arduino_IP_Addr: String?
    var Connection_Status: String?
    var Current_Angle_Position: NSNumber?
    var Solar_Optimization: String?
    var Timezone: String?

    static func dynamoDBTableName() -> String {
        return "Swedish_Solar_Awnings"
    }

    static func hashKeyAttribute() -> String {
        return "Awning_Number"
    }
}

Я хочу обновить awnings таблица с базой данных вместо ее жесткого кодирования, но я не понимаю, почему с помощью DynamoDBObjectMapper.load() не работает пишу print("result Awning_Number:\(result.Awning_Number!)") а также print("result Arduino_MAC_Addr:\(result.Arduino_MAC_Addr!)") в вызов load выводит ожидаемый результат (Awning_Number а также Arduino_MAC_Addr), поэтому проблема состоит в том, что awnings запись перестает существовать вне этого вызова загрузки. Я пробовал несколько разных комбинаций. Как я могу загрузить каждый тент из DynamoDB?

0 ответов

Другие вопросы по тегам