Dictionary: Playground und Projekt reagieren unterschiedlich

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

  • Dictionary: Playground und Projekt reagieren unterschiedlich

    Folgendes funktioniert im Playground:

    Quellcode

    1. var meinDict = ["key1": ["wert1", "wert2", "wert3"], "key2":["wert1"]]
    2. let t=meinDict["key1"]
    3. let n=t?.count


    In einem Projekt unter viewDidLoad gibt es in der Zeile let n=t?.count einen Fehler:
    'Any?' does not have a member named 'count'

    Wieso funktioniert .count im Projekt nicht mehr? Danke!
  • Aber sollte t nicht ein Array von Werten statt eines Strings sein?

    Auf das 'warum' würde ich vor iOS 9 übrigens immer noch mit 'Ist noch Beta' antworten. ;)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Nein. Funktioniert leider auch nicht:
    '(String, Any)' is not convertible to '[string]'

    Marco Feltmann schrieb:

    Aber sollte t nicht ein Array von Werten statt eines Strings sein?

    Ja, möchte die Anzahl der Werte zählen. Eigentlich geht es nur um eine TableView mit Sections. Aber wenn das oben schon nicht geht, brauch ich nicht weitermachen.

    Versuche seit 2 Tagen schon alles (un)mögliche, um eine Tableview mit Sections zu bekommen. Ganz einfach, bloß nichts kompliziertes. Zum rumspielen, verstehen und lernen.

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

  • Hab grad deinen Code als Konsolenprogramm unter OS X 10.10 mit Xcode 6 beta 4 ausprobiert und des funktioniert doch!? In Playground gabs auch keine Unterschiede. Die Deklaration von meinDict ist bei mir var meinDict: [String : Array<String>]

    Quellcode

    1. import Foundation
    2. var meinDict = ["key1": ["wert1", "wert2", "wert3"], "key2":["wert1"]]
    3. let t1 = meinDict["key1"]
    4. let n1 = t1?.count // Int?
    5. let t2 = meinDict["key2"]
    6. let n2 = t2?.count as Int // Int
    7. println("count 1: \(n1) | count 2: \(n2)")
    8. //Ausgabe count 1: Optional(3) | count 2: 1
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von manoh ()

  • var meinDict: [String : Array<String>]

    Danke, das war die Lösung! Hatte im Playground und im Projekt nichts deklariert. Dachte Swift macht das weitgehend automatisch. Scheinbar bin ich noch nicht soweit, muss etwas mehr in den beiden Swift-Büchern lesen und im Playground üben.

    Auf das 'warum' würde ich vor iOS 9 übrigens immer noch mit 'Ist noch Beta' antworten.

    Nein. Eindeutiges Layer 8 Problem (ich). Besonders in der Einstiegsphase bin ich mir dabei sehr sicher.