Nicht aufrufen kann, Wert der nicht-Funktion Typ 'String'
Ich versuche zum bestehen der ILTItem variable in meine ILTViewController, ausgelöst durch AppDelegate.swift, wenn der Benutzer startet meine app via deeplink.
Den code habe ich Fehler mit:
Nicht aufrufen, Wert der nicht-Funktion Typ 'String'
auf die Zeile, wo ich definieren ilt
.
Hier der code, ich habe im moment:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
var ilt = ILT(homeworkID: 1234, title: "History ILT", subject: "History", teacher: "Miss A Smith", teacherCode: "asmith", studentID: 12345, description: "Description....", due: 1450137600, status: "In Progress", hasAttachments: true)
var newVC = ILTViewController()
newVC.ILTitem = ilt
appDelegate.window?.addSubview(newVC.view)
Warum könnte das sein? In meinem ILTViewController Klasse, ich habe:
class ILTViewController: UIViewController {
//accept the incoming ILT struct
var ILTitem: ILT!
IlT Struct-Deklaration:
struct ILT {
let homeworkID: Int
let title: String
let subject: String
let teacher: String
let teacherCode: String
let studentID: Int
let description: String
let due: Double
let status: String
let hasAttachments: Bool
}
InformationsquelleAutor der Frage James | 2016-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Fehler ist Ihnen zu sagen, dass Sie versuchen, rufen Sie ein
String
statt einer Methode (struct-Konstruktor in Ihrem Fall). Wahrscheinlich haben Sie erklärtString
variable mit dem NamenILT
(groß -) irgendwo und das ist der Grund, warum es scheitert.Ihre geposteten code funktioniert einwandfrei also der Fehler muss irgendwo in Ihrem code.
InformationsquelleAutor der Antwort redent84
Funktioniert:
Ausfällt:
Müssen Sie sicherstellen, dass verwenden Sie den parameter (
$0
oder_ in
), die in der Schließung Ausdruck.Verwenden
_ in
oder$0
zu verwerfen, oder einen Verweis auf die parameter. Können Sie nicht einfach verschieben Sie Sie direkt in die Schließung Körper und zurücktrue
oder Sie erhalten diese (extrem hilfreich) Fehler.InformationsquelleAutor der Antwort pkamb
Hatte ein ähnliches Problem in diesem code
War das problem mit
$0
die nicht gemäßEquatable
Protokoll. In meinem Fall entsprachNSObjectProtocol
und einfacher pointer-Vergleich war genug, damit ich das Problem mit demInformationsquelleAutor der Antwort Tim
So, ich hatte ein problem mit einer ähnlichen Fehlermeldung. Ich Schreibe eine Struktur zu behandeln Skalare für meine Bibliothek und benötigt eine Quadratwurzel.
Fehler war
beim Aufruf von sqrt. Fixiert es, indem Sie explizit den Aufruf sqrt wie unten gezeigt. Hoffe, das hilft.
InformationsquelleAutor der Antwort JVSIP
In Herumspielen mit Swift verschiedene Verschluss-syntax-Typen + autocomplete oft finde ich mich in einem Durcheinander von Variablen und Rückgabewerte über zu wenige oder zu viele Sätze
()
oder{}
Landete ich mit etwas wie:
Denen war, die den Fehler
Lösung war, entfernen Sie die nachfolgende
{ }
die nicht richtig in dieser form.Sollte nur
filenames.first(where: { $0 == filename } )
Überprüfen, dass Sie nicht falsch angewendet eine Reihe von Klammern, um das Ende der nicht-Funktion, etc., oder einige andere schwer zu erkennen Fehler in Ihrem aktuell gewählten Swift Schließung syntax.
InformationsquelleAutor der Antwort pkamb
Wickeln Sie Ihre let-Anweisung, wenn z.B.:
InformationsquelleAutor der Antwort Vlad