Hilfe mit Objective-C/Swift mit type Any?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hilfe mit Objective-C/Swift mit type Any?

    Hallo zusammen,

    ich muss im Rahmen meines Bachelor Projekts eine App programmieren, das mit iBeacons arbeitet.

    Mir wurde ein CMS mit API bereitgestellt von Xamoom, deren API leider nur in Obj-C geschrieben ist. Über einen ObjCBridge komme ich an die Methoden ran.

    Ich stehe momentan massiv auf dem Schlauch - ich bekomme es nicht auf die Reihe den content vom CMS zu laden. :S

    Hier zu erstmal den Code und hier die API: Xamoom Api

    Python-Quellcode

    1. import UIKit
    2. class ExplorerUIViewController: UIViewController, XMMContentBlocksDelegate {
    3. func didClickContentBlock(_ contentID: String!) {
    4. print("do nothing")
    5. }
    6. @IBOutlet weak var meinLabel: UILabel!
    7. @IBOutlet weak var picView: UIImageView!
    8. @IBOutlet weak var describtionLabel: UILabel!
    9. @IBOutlet weak var buttonLabel: UILabel!
    10. override func viewDidLoad() {
    11. super.viewDidLoad()
    12. let api = XMMEnduserApi(apiKey: "XXXXXXXXXXXXXX")
    13. //Erster Aufruf
    14. api.content(withID: "XXXXXXXXXXXXX") { (content, error) in
    15. self.meinLabel.text = content?.title
    16. self.describtionLabel.text = content?.contentDescription
    17. self.buttonLabel.text = String((content?.contentBlocks.count)!)
    18. let firstContent = content?.contentBlocks.first <---HIER
    19. }
    20. }
    21. override func didReceiveMemoryWarning() {
    22. super.didReceiveMemoryWarning()
    23. }
    24. }
    Alles anzeigen
    An der Stelle "<---HIER" im Quellcode komme ich nicht mehr weiter. Der API nach müsste ich einen Array mit dem Typ XMMContentBlock bekommen. Ich bekomme aber nur ein Array von Typ "Any?" ?(

    Was habe ich übersehen? oder ist das ein Problem seitens der Macher?

    Bestimmt gibt es jemand da draußen der mir helfen kann.

    PS: Die Variablennamen werden im Finalen nicht so heißen :P

    grüße

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Swiffer ()

  • Da die API in Objective-C geschrieben ist und dort keine Typinformation bei den Array deklariert ist, kommen in Swift halt nur Array an, die Any enthalten. Du musst also in Swift auf den richtigen Typ casten:

    Quellcode

    1. if let firstContent = content?.contentBlocks.first as? XMMContentBlock {
    2. ....
    3. }