Ne peut appeler à la valeur de non-fonctionnement de type 'String'
Je suis en train de passer le ILTItem variable dans mon ILTViewController, déclenchée par AppDelegate.swift lorsque l'utilisateur lance mon application via un deeplink.
Le code que j'ai des erreurs avec:
Ne peut appeler à la valeur de non-fonctionnement de type 'String'
sur la ligne où j'définir ilt
.
Voici le code que j'ai en ce 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)
Pourquoi cela pourrait-il être? Dans mon ILTViewController classe j'ai:
class ILTViewController: UIViewController {
//accept the incoming ILT struct
var ILTitem: ILT!
IlT Struct Déclaration:
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
}
Publier vos
J'ai ajouté
Votre code fonctionne très bien: swiftstub.com/580271845 . Vous avez probablement déclaré
Ce n'est pas la question, comme si j'associe à
Ce que je disais, c'est que vous redéclarée
ILT
déclaration de classeJ'ai ajouté
Votre code fonctionne très bien: swiftstub.com/580271845 . Vous avez probablement déclaré
String
variable nommée ILT
quelque part d'autre et c'est pourquoi il échoue.Ce n'est pas la question, comme si j'associe à
newVC.ILTItem = 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)
il échoue toujours avec le même message.Ce que je disais, c'est que vous redéclarée
ILT
(en majuscules), pas ilt
(en minuscules). L'erreur est de vous dire que vous essayez d'appeler un String
au lieu d'une méthode (struct un constructeur dans votre cas). Et, comme vous pouvez le vérifier dans le lien que j'ai fourni, l'erreur est ailleurs, dans votre code, parce que le code que vous avez posté, fonctionne très bien.OriginalL'auteur James | 2016-01-27
Vous devez vous connecter pour publier un commentaire.
L'erreur est vous dire que vous essayez d'appeler un
String
au lieu d'une méthode (struct un constructeur dans votre cas). Vous avez probablement déclaréString
variable nomméeILT
(en majuscules) quelque part d'autre et c'est pourquoi il échoue.Votre posté code fonctionne très bien donc l'erreur doit être quelque part d'autre dans votre code.
ILTViewController: UIViewController
classe ne comprend pas recevoir la nouvelle variableprint
ingILTItem.title
renvoie la valeur null. Aucune idée pourquoi?Je vous recommande d'ouvrir une nouvelle question avec le code pertinent et, de préférence, un autonome exemple de projet de reproduire le problème.
OriginalL'auteur redent84
Travaux:
Échoue:
Vous devez être sûr de utilisez le paramètre (
$0
ou_ in
) dans la fermeture de l'expression.Utilisation
_ in
ou$0
de jeter ou de référence le paramètre. Vous ne pouvez pas simple de passer directement dans la fermeture du corps et de retourtrue
ou vous recevrez (très peu utile) erreur.OriginalL'auteur pkamb
Eu un problème similaire dans le présent code
Le problème était avec
$0
pas conforme àEquatable
protocole. Dans mon cas, il était conforme àNSObjectProtocol
et simple pointeur de la comparaison était suffisant, j'ai donc résolu le problème avecOriginalL'auteur Tim
Donc j'ai eu un problème avec un message d'erreur similaire. Je suis en train d'écrire une structure pour gérer les Scalaires de ma bibliothèque et avait besoin d'une racine carrée.
L'erreur a été
lors de l'appel de la racine carrée. Il fixe en appelant explicitement sqrt comme indiqué ci-dessous. Espérons que cette aide.
OriginalL'auteur JVSIP
Dans de déconner avec le Swift diverses clôture de la syntaxe des types + de saisie semi-automatique je me retrouve souvent dans un désordre de variables, des types de retour, et l'utilisation de trop peu ou trop de jeux de
()
ou{}
Je me suis retrouvé avec quelque chose comme:
Qui donnait l'erreur
Solution a été de supprimer la fin
{ }
, qui n'est pas correct dans ce formulaire.Faut juste être
filenames.first(where: { $0 == filename } )
Vérifier que vous n'avez pas incorrectement appliqué un ensemble de barrages à la fin de votre non-fonction, etc., ou une autre difficile de repérer les erreurs dans votre choisi Swift fermeture de la syntaxe.
OriginalL'auteur pkamb
Envelopper votre instruction let si par exemple:
OriginalL'auteur Vlad