2016-12-02 7 views
0
import UIKit 

var party: Party = Party() 

struct list 
{ 
    var id = "id" 
    var startDate = "11/11/1111" 
    var name = "name" 
    var address = "address" 
} 

class Party: NSObject 
{ 
    var lists = list[]() <-- this one has "Type 'list.Type' has no subscript members" 

    func addParty(startDate:Date, name:String, address:String) 
    { 
     lists.append(list(startDate:startDate, name:name, address:address)) 
    } 
} 

Hallo, ich bin sehr neu zu swift und iOS xcode. Ich habe youtube Tutorial über das Erstellen von Todo-Liste verfolgt, aber die Zeile, wo es sagt var lists = list gibt mir einen Fehler. Erkennt jemand, was daran falsch ist? Vielen Dank.Swift, Typ 'list.Type' hat keine tiefgestellten Mitglieder

Antwort

3

Die richtige Arrayinitialisierungssyntax erstellen möchten ist

var lists = [list]() 

aber Ihr Code nicht kompilieren, weil startDate deklariert ist rot wie String, aber ein Date Parameter wird übergeben.

Declare startDate als aktuelle Date - das ist die neue native Datum struct in Swift ist 3

var startDate = Date() 

oder addParty ändern

func addParty(startDate:String, name:String, address:String) 

Sie müssen die initializer ohnehin ändern, da die implizite element initializer erfordert zu übergeben alle Parameter

lists.append(list(id:"id", startDate:startDate, name:name, address:address)) 

PS: Bitte beachten Sie die Swift-Namenskonvention, dass Klassen, Strukturen und enums mit einem Großbuchstaben beginnen.

PPS: Wenn das Tutorial schlägt alle Anfänger Fehler suchen ein besseres Tutorial

+0

Vielen Dank! aber was kann ich mit Date machen? Ich habe recherchiert aber es ging nur um NSDate, nicht um Date auf der Website. Wie verwende ich Datumsart? – Eric

+0

Es tut mir leid, aber wenn ich Liste in eckige Klammer setzen, funktioniert lists.append nicht. – Eric

+0

Ich habe die Antwort aktualisiert – vadian

-1

Ihre list ist struct und kann Ihnen kein Element per Index geben. Ersetzen Sie einfach

var lists = list[]() 

mit

var lists = list() 

oder var lists = [list()] wenn Sie eine Reihe von Listen

Verwandte Themen