Am un tip in modulul meu:
import Cocoa
class ColoredDotView : NSView {
...
}
Acesta este utilizat într-un număr de clase diferite, cu nici o problema:
class EditSubjectPopoverController : NSObject {
@IBOutlet internal var subjectColorDotView : ColoredDotView!
...
}
Dar pentru unii motiv, atunci când îl folosesc într-un singur specifice* clasă, am erorile de compilare pe tip:
class EditTaskPopoverController : NSObject {
@IBOutlet internal var lowPriorityDotView : ColoredDotView! // Error here
@IBOutlet internal var medPriorityDotView : ColoredDotView! // And here...
@IBOutlet internal var highPriorityDotView : ColoredDotView! // And here...
...
}
Elaborarea de eroare este:
EditTaskPopoverController.swift:15:49: Utilizarea nedeclarate tip 'ColoredDotView'
Care nu't înțeleagă. L's prima eroare de compilare în dosar, iar restul de erori sunt simptomatice din prima. Mai mult, există nu există alte fișiere cu erorile de compilare. Eu nu't înțeleg de ce tip este nedeclarate, ca dosarul este în același modul:
Am încercat de curățare proiectului, de curățare a construi folder, și repornirea Xcode, fără nici un rezultat. Ce potențial pasi gresiti poate provoca o "la negru" tip` compiler eroare în Swift?
Pentru mine, am întâlnit această eroare atunci când testul meu țintă nu au un swift fișiere care aplicația mea de a construi țintă avut în surse de compilare. A fost foarte confuz, deoarece 'nedeclarate tip' a fost folosit în atât de multe alte locuri cu nici o problema, iar eroarea părea vag. Deci, soluția nu a fost, desigur pentru a adăuga fișierul care conține 'nedeclarate tip' la încercare țintă.
Acest lucru a fost deja răspuns de @Craig Otis, dar problema este cauzată în cazul în clasele în cauză nu aparțin aceleași obiective, de obicei, ținta a dispărut. Doar asigurați-vă că următoarele casete de selectare sunt bifate.
Pentru a vedea ținta de aderare. Selectați fișierul, apoi deschideți fișierul inspector (⌥ + ⌘ + 1) [opțiune] + [comanda] + 1
Pfiu, în cele din urmă l-a diagnosticat. Cumva, ofensatoare fișier Rapidă `EditTaskPopoverController.swift a fost în două diferite construi faze.
Acesta a fost în Compila Sursele
în mod corespunzător, cu toate celelalte Swift fișiere, dar a fost de asemenea, pentru un motiv foarte ciudat, în Copie Pachet de Resurse de fază, precum și, împreună cu toate XIB și resurse de imagine.
Nu am nici o idee cum a ajuns acolo, dar scoate-l din plus construi faza a rezolvat problema.
Am avut exact aceeasi problema. Unele dintre fișierele în cadru nu au fost accesibile din alte clase în cadrul aceluiași modul.
Pentru unii motiv, fișierele care au fost adăugate la cadrul în Xcode nu a fost parte a Compila Sursele. Dacă Swift fișier nu este parte a compila sursele aveți nevoie să adăugați-le prin atingerea și selectându-le în pop-up.
De asemenea, asigurați-vă că fișierul este parte a cadrului țintă. (Caseta mica din imaginea de mai jos ar trebui să fie verificate)
Cauza pentru mine a fost un nume de funcție, care a început cu aceleași personaje ca un tip:
@IBOutlet weak var tableView: CustomTableView!
și în punerea în aplicare a trebuit o funcție începând cu CustomTableView
func CustomTableView(tableView: CustomTableView, dataForRow row: Int) -> NSData {...}
Fix a fost de a schimba funcția semnătura așa că l-am't începe cu aceleași caractere ca tip (CustomTableView), de exemplu:
func dataForRow(row: Int, tableView: CustomTableView) -> NSData {...}
Acest lucru a fost un foarte înșelătoare mesaj de eroare pentru că în cazul meu.
În cazul meu, TestTarget's compila sursele aveau fișiere de Principala Țintă.
Ref:
De ce se întâmplă acest lucru ?
Acest lucru se întâmplă de când am verifica TestTarget asociere în timp ce crearea de fișierul
Sau verificarea manuală această opțiune de inspector.
Ref:
Cum v-am rezolva ?
În aplicația mea am app delega și alte clase care au nevoie pentru a fi accesate de teste publice. După cum este subliniat aici, apoi import meu app în testele mele.
Când am creat recent două noi clase ,testul lor obiective au fost atât principal și testarea pieselor. Scoaterea lor din calitatea de membru de teste rezolvate problema.
În cazul în care cineva confruntă cu o problemă similară, dar Compila Sursele de repara nu rezolva problema, repornirea Xcode poate (la mine a mers). Versiunea mea de Xcode este Versiunea 6.1 (6A1052d)`.
Acest lucru ar putea ajuta pe cineva.
Am'am creat noul proiect de test cu Date de Bază numit "CoreData". La scurt timp m-am'am "Utilizarea nedeclarate de tip" pentru NSManagedObjectContext și alte Date de Bază clase. După mai multe încercări de a importa, adăugând să Construiască faze, etc. Am'am șters de proiect și început de nou, numit "TestingCoreData" si totul a mers bine.
Don't numele (test) de Proiecte, cum ar fi nume de Clase
Acest lucru se poate întâmpla, de asemenea, dacă aveți o funcție cu același nume ca un tip de obiect în semnătura ta. De exemplu:
class func Player(playerObj: Player)
va determina compilatorul pentru a obține confuz (si pe buna dreptate) deoarece compilatorul va arata primul plan local, în fișier înainte de a privi la alte fișiere. Deci, se pare, la "Jucător" în semnătura și crede, ca's nu un obiect în acest domeniu, dar o funcție, așa că ceva este greșit.
Poate că acest lucru este un motiv bun pentru care nu ar trebui't valorifica funcții de clasă. :)
În cazul meu, acest lucru a fost cauzat de o subclasă numele fiind folosit în următoarea linie ca un nume de variabilă, cu un alt tip:
var binGlow: pipGlow = pipGlow(style: "Bin")
var pipGlow: PipGlowSprite = PipGlowSprite()
Observați că în linia 1, pipGlow este numele de subclasă (de SKShapeNode), dar în linia a doua, am fost folosind pipGlow ca un nume de variabilă. Acest lucru nu a fost doar rău stil de codificare, dar se pare că un categoric nu-nu la fel de bine! O dată ce am schimba de-a doua linie de:
var binGlow: pipGlow = pipGlow(style: "Bin")
var pipGlowSprite: PipGlowSprite = PipGlowSprite()
Am mai primit eroarea. Sper că acest lucru ajută cineva!
Atunci când se testează codul Swift, care aparține aplicație, în primul rând asigurați-vă că ținta este construirea aplicația ca o dependență. Apoi, într-un test, import aplicația ca un modul. De exemplu:
@testabile import MyApplication
Acest lucru va face Swift obiecte care fac parte din cerere este disponibil pentru testare.
ca și ceilalți menționate bine și în acest thread
utilizarea inutile swift fișiere în "copia pachet de resurse"
Poate ați adăugat-o clasa cu niste "FirstNameClass" și după aceea manual redenumiți pentru a "ColoredDotView". Încercați să copiați conținutul de "ColoredDotView" clasă în clipboard, elimina "ColoredDotView" din proiect și adăugați agin.
Acest id repara problema asemanatoare la mine.