2014-09-24 13 views
35

Ho aggiornato XCode da 5.1.1 a XCode 6.0.1 di recente. Ora ogni volta che voglio definire un nuovo oggetto UIImage ottengo questo errore:Nome tipo sconosciuto 'UIImage'

Unknown type name 'UIImage'

Codice:
1. Creare un nuovo progetto
2. Aggiungere Image View controllo al storyboard
3. Riferimento della Image View da aggiungendo IBOutlet
4. Aggiungi nuovo file di classe
5. Aggiungere la seguente riga di codice al file di intestazione della nuova classe:

@property (strong, nonatomic) UIImage *background;

file di intestazione (h) tenore:

 
#import <Foundation/Foundation.h> 

@interface CCTile : NSObject 

@property (strong, nonatomic) NSString *story; 
@property (strong, nonatomic) UIImage *background; // Error: Unknown type name 'UIImage' 

@end 

Tuttavia, se aggiungo #import <UIKit/UIKit.h> al file di intestazione (sopra) tutto sembra OK! Qualche idea di cosa mi manca qui, per favore? È un cambiamento nei file header di XCode!

+0

Senza importare UIKit il compilatore non sa cosa sia UIImage. UIImage è definito in UIKit, quindi è necessario importarlo. Probabilmente Xcode non l'ha importato automaticamente perché si sta sottoclasse da NSObject e non da UIViewController o da una sua sottoclasse –

+0

Questo #import non era richiesto in XCode 5 come ricordo! UIImage era conosciuto in qualche modo, forse perché era definito nel (main.m), che è il caso di XCode 6 comunque! Bene, penso che ci sia un cambiamento in XCode 6 che causa questo comportamento. – aenawi

risposta

81

Ho anche avuto lo stesso problema e risolto utilizzando

#import <UIKit/UIKit.h> 

Tuttavia, ho scavato intorno un po 'e confrontato un progetto realizzato in XCode 6 rispetto a Xcode 5 e ho notato che Xcode 6 non creava un file di intestazione prefisso. Il file di intestazione prefisso viene importato implicitamente in ogni classe e il file di intestazione prefisso (.pch) include UIKit e Foundation.

Per creare un file pch, selezionare File -> Nuovo -> File -> Altro -> File PCH. Modificare il nome in "YourProject-prefix.pch". Aggiungere il seguente:

#ifdef __OBJC__ 
#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 
#endif 

Quindi è necessario impostare le impostazioni di generazione. Vai al tuo progetto -> crea impostazioni -> cerca in alto: intestazione prefisso.

Verrà visualizzata l'intestazione del prefisso precompilata -> passare a sì. Inoltre, sotto è Prefix Header. Aggiungi il percorso dell'intestazione del tuo prefisso. Dovrebbe essere come: "YourProject/YourProject-prefix.pch".

+1

grandi cose, come questo non devi pensare di importare manualmente UIKit in ogni file pertinente. Grazie! –

+0

Sto affrontando lo stesso problema, ma nel file di un pod. Ora non posso modificare il file pod (perché lo cambierà al prossimo aggiornamento). E voglio usare anche il nuovo modulo fornito da Xcode 6 invece del file pch. N –

+0

è molto utile per me. – Anju

10

per Nome tipo sconosciuto 'UIImage' o qualsiasi oggetto UI richiesto.

#import (UIKit) risolverà il problema. questo sta funzionando per me ....

+2

L'ho notato! Mi sto chiedendo perché questo sta accadendo con XCode 6! In XCode 5 non ricordo di aver dovuto #importare eventuali intestazioni extra per normali oggetti dell'interfaccia utente. – aenawi

6

Ran nella stessa questione. Risolto esso facendo

#import <UIKit/UIKit.h> 

Kudos mela: P

+0

Questo è corretto al 100% e funziona per me. –

Problemi correlati