2016-06-09 13 views
0

ich versuche, Benutzerdaten von AWS DynamoDB wie dies zum Download:AWS DynamoDB Abfrage stürzt die meiste Zeit

func downloadUserData(id: String) { 
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true 

    let qe = AWSDynamoDBQueryExpression() 
    qe.hashKeyAttribute = "id" 
    qe.hashKeyValues = id 

    dynamoDBObjectMapper!.query(DDBUser.self, expression: qe).continueWithBlock { (task: AWSTask) -> AnyObject? in 
     if task.error != nil { 
      NSLog("\(self)") 
      NSLog("Fehler beim Laden der Userdaten: \(task.error)") 
     } else { 
      let paginatedOutput = task.result as! AWSDynamoDBPaginatedOutput 
      print("output \(paginatedOutput.items)") 
      for user in paginatedOutput.items as! [DDBUser] { 
       SessionController.sharedInstance.user = user 
       for (index, tacklId) in SessionController.sharedInstance.user.tacklIds.enumerate() { 
        if tacklId == "empty" { 
         SessionController.sharedInstance.user.tacklIds.removeAtIndex(index) 
        } 
       } 
       if !(SessionController.sharedInstance.user.endpoints.contains(SessionController.sharedInstance.currEndpoint!)) { 
        SessionController.sharedInstance.user.endpoints += [SessionController.sharedInstance.currEndpoint!] 
       } 
      } 
      NSLog("User Download Complete") 
      dispatch_async(dispatch_get_main_queue()) { 
       UIApplication.sharedApplication().networkActivityIndicatorVisible = false 
       self.userdataDelegate?.userdataDownloadComplete!() 
      } 
     } 
     return nil 
    } 
} 

Nicht alle Tage, aber die meiste Zeit, stoppt die Ausführung an dieser Linie:

for user in paginatedOutput.items as! [DDBUser] { 

mit diesem Fehlercode:

exc_breakpoint (code=1, subcode=0x10015d440) 

Es kommt sogar mit Haltepunkten deaktiviert, und ich kann mit dem E nicht mehr weiter Verfolgung.

Die Linie vor der Pause:

print("output \(paginatedOutput.items)") 

gut funktioniert. Könnte das Problem in einem anderen Thread sein und es zeigt mir hier fälschlicherweise den Fehler? Wie debugge ich das am besten? Danke

Antwort

0

Sie versuchen

let qe = AWSDynamoDBQueryExpression() 
qe.hashKeyAttribute = "id" 
qe.hashKeyValues = id 

zu verwenden, die veraltet ist. Ich würde vorschlagen, dass Sie stattdessen "keyConditionExpression" und "expressionAttributeValues" verwenden.

Danke, Rohan

+0

danke! Ich werde das überprüfen! – weka1

Verwandte Themen