Ich habe mein eigenes schnelles Framework zum Ausführen von Abfragen in einer MySQL-Datenbank erstellt. Ich entwickle gerade eine Chat-Anwendung, in der ich für jeden Benutzer, der gerade chattet, ein Avatar-Bild anzeigen muss.Rückgabewert nach Abschluss der Funktion
Ich erhalte die Profilbild-URL des Benutzers aus meiner Datenbank und dann muss ich eine UIImage
zurückgeben, sobald ich die Profilbild-URL erhalte. Ich bekomme den Fehler Unexpected non-void return value in void function
. Gibt es eine Möglichkeit, dies zu erleichtern oder diesen Fehler zu umgehen?
Das ist mein voller Code:
override func collectionView(collectionView: JSQMessagesCollectionView!, avatarImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageAvatarImageDataSource! {
let currentMessage = self.messages[indexPath.row]
if (currentMessage.senderId == self.senderId) {
// Current User sent message
var imageURL: NSURL!
ConnectionManager.sharedInstance.complexQuery("SELECT profile_picture FROM users WHERE username='\(self.senderId)' ", completion: { (result) in
if let results = result as? [[String: AnyObject]] {
for result in results {
if let profilePictureURL = result["profile_picture"] {
print(profilePictureURL)
imageURL = profilePictureURL as! NSURL
let imageData = NSData(contentsOfURL: imageURL)
let image = UIImage(data: imageData!)
// ERROR HERE (line below)
return JSQMessagesAvatarImageFactory.avatarImageWithImage(image, diameter: UInt(kJSQMessagesCollectionViewAvatarSizeDefault))
}
}
}
})
} else {
var imageURL: NSURL!
ConnectionManager.sharedInstance.complexQuery("SELECT profile_picture FROM users WHERE username='\(currentMessage.senderId)' ", completion: { (result) in
if let results = result as? [[String: AnyObject]] {
for result in results {
if let profilePictureURL = result["profile_picture"] {
print(profilePictureURL)
imageURL = profilePictureURL as! NSURL
let imageData = NSData(contentsOfURL: imageURL)
let image = UIImage(data: imageData!)
// ERROR HERE (line below)
return JSQMessagesAvatarImageFactory.avatarImageWithImage(image, diameter: UInt(kJSQMessagesCollectionViewAvatarSizeDefault))
}
}
}
})
}
}
JSQMessagesAvatarImageFactory.avatarImageWithImage (UIImage (Daten: (NSData (contentsOfURL: imageURL))), Durchmesser: UInt (kJSQMessagesCollectionViewAvatarSizeDefault))} –
Was gibt das obige zurück? –
@OlivierWilkinson Ich verwende die JSQMessageViewController-Bibliothek, um meine Chat-Nachrichten in meinem View-Controller anzuzeigen. Es gibt ein JSQMessagesAvatarImage zurück (im Grunde ein Bild aus der von der Abfrage zurückgegebenen URL). –