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?