Clase de testing del objective C usando el código Swift

Tengo un protocolo rápido IModelIdProvider en la carpeta MyProjectName . He creado una class de testing de unidad objective c llamada RemoteModelFactoryTest en la carpeta MyProjectNameTests . Para realizar algunas testings, RemoteModelFactoryTest debe implementar el protocolo IModelIdProvider .

Cuando #import "MyProjectName-Swift.h" para usar mi protocolo swift en mi class objective-c, obtengo un file not found .

Si cambio la instrucción #import a #import "MyProjectNameTests-Swift.h" , se encuentra el encabezado pero no mi protocolo (está definido en el proyecto MyProjectName , no en el proyecto MyProjectNameTests ).

¿Hay algo especial que hacer en los proyectos *Tests para usar el código Swift?

Sé que es hacky extra y todo, pero lo que hice y funcionó fue copyr los encabezados públicos de "Project-Swift.h" generado y pegar lo que se necesita al file .m de testing.

Entonces copié algo como esto:

 SWIFT_CLASS("_TtC10Inventorum11ImageEntity") @interface ImageEntity : NSObject <FICEntity> @property (nonatomic, copy) NSString * imageID; @property (nonatomic) NSURL * retinaImageURL; @property (nonatomic) NSURL * nonRetinaimageURL; @property (nonatomic, readonly) NSURL * imageURL; @property (nonatomic, readonly, copy) NSString * UUID; @property (nonatomic, readonly, copy) NSString * sourceImageUUID; @property (nonatomic) RACSignal * rac_signalForImage; - (instancetype)init OBJC_DESIGNATED_INITIALIZER; - (NSURL *)sourceImageURLWithFormatName:(NSString *)formatName; - (FICEntityImageDrawingBlock)drawingBlockForImage:(UIImage *)image withFormatName:(NSString *)formatName; - (void)objc_setType:(NSString *)type; @end 

Además de esto, también he copydo todas las macros para SWIFT_CLASS, etc. Mis testings están construyendo y pasando las testings del código Swift.

Por cierto No se olvide de publicar en classs y methods probados en Swift.

Para importar un set de files Objective-C en el mismo marco de destino que su código Swift, tendrá que importar esos files en el encabezado de paraguas Objective-C para el marco.

Para importar código Swift a Objective-C desde el mismo marco

En Configuración de compilation, en Empaquetado, asegúrese de que la configuration Definir module para ese objective de marco esté configurada en Sí. Importe el código Swift desde ese objective marco a cualquier file Objective-C .m dentro de ese objective marco utilizando esta syntax, y sustituyendo los nombres apropiados …

https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_75