2016-05-27 11 views
3

Ich versuche, eine Variable aus der Liste meiner Users Klasse in Data Klasse zu nennen, aber ich diesen Fehler geworfenSwift: Instanzelement nicht auf Typen verwendet wird

Instanz Mitglied ‚Benutzer‘ kann nicht auf Art verwendet werden 'Daten'

Data Klassencode:

import Foundation 

class Data { 

    static let sharedInstance = Data() 

    let user = Users() 
    var id = (user.userId).string 

    //Login.swift 
    static let quarterlyEndpoint: String = "http://anyapi/api/users/\(id)/quarterly/tasks" 

// for prevent from creating this class object 
private init() { } 

} 

Users Klassencode:

var userId: Int { 

    guard let _userId = getId() else { 
     return 0 
    } 

    return _userId 
} 

UPDATE

ich die Funktion aufrufen kann, aber wenn ich meine weeklyEnd drucken würde ich http://anyapi/api/users/(Function)/quarterly/tasks statt http://anyapi/api/users/3/quarterly/tasks

let user = Users() 

func getId() -> String 
{ 
    let id = String(user.userId) 
    return id 
} 

static let weeklyEndpoint: String = "http://anyapi/api/users/\(getId)/quarterly/tasks" 

UPDATE 2

import Foundation 

class Data { 

static let sharedInstance = Data() 

let user = Users() 
let id:String? 
let weeklyEndpoint: String? 

// for prevent from creating this class object 
private init() { 
    id = String((user.userId)) 
    //Login.swift 
    weeklyEndpoint = "http://anyapi/api/users/\(id)/quarterly/tasks" 
} 

} 
erhalten

Ich habe Probleme, meine weeklyEndPoint von außerhalb der Data Klasse anzurufen. Ich habe versucht Data.weeklyEndPoint, aber es funktioniert nicht

Antwort

1

Versuchen Sie, eine Methode innerhalb der Klasse Daten wie folgt.

func getusrid()-> String 
{ 
var id = (user.userId).string 
return id ; 

} 

Sie können nicht Wert von Instanzvariablen außerhalb jeder Methode erhalten

EDIT:

class Data { 

    static let sharedInstance = Data() 
    let id:String? 
    let quarterlyEndpoint: String? 

    let user = Users() 
    private init() 
    { 
    id = String((user.userId)) 
    quarterlyEndpoint = "http://anyapi/api/users/\(id)/quarterly/tasks" 

    } 




} 
+0

Wie kann ich es aus der Zeichenfolge nennen? Ich habe versucht, '\ (getusrid())' '' hinzuzufügen, aber ich würde eine "Verwendung von Instanz-Mitglied 'getusrid' auf Typ 'Data' bekommen, wollten Sie stattdessen einen Wert vom Typ 'Data' verwenden?" Fehler – noobdev

+0

Oh ja, das wird ein Problem richtig sein, das Beste, was ich vorschlagen kann, ist Ihre private init() {ID = (user.userId) .string vierteljährlichEndpoint: String = "http: // anyapi/api/users/\ (ID)/vierteljährlich/Aufgaben " } –

+0

und deklarieren Sie die ID und die vierteljährlichEndpoint Variablen früher –