Actualment estic intentant utilitzar un codi de codi Escric a C ++ en una aplicació per a iPhone. He llegit a l’embolcall de codi C ++ amb Objective-C ++. La funció C ++ que anomeno trucada porta els arguments 2 STD :: String i retorna un STD :: Cadena:

// ObjCtoCPlusPlus.mm#import <Foundation/Foundation.h>#include "CPlusPlus.hpp"#import "ObjCtoCPlusPlus.h"@implementation Performance_ObjCtoCPlusPlus : NSObject- (NSString*) runfoo: (NSString*)list{std::string nodelist = std::string( UTF8String]);std::string lines = std::string( UTF8String]);std::string result = Performance_CPlusPlus::run(nodelist, lines);return ];}- (void) exp{Performance_CPlusPlus::explanation();}@end

Jo anomeno l’objectiu- C ++ Funció de Swift

// I am calling the function from the [email protected] func button(sender: AnyObject) {let z : String = "0 1/1 2";let q : String = "a b Y";let x = Performance_ObjCtoCPlusPlus.runfoo((q + "*" + z) as NSString)}

Error: No es pot convertir el valor NSSTRING en el tipus d’argument esperat Renasformobjctocplusplus. Crec que l’error que tinc és perquè no puc convertir el tipus de cadena de rapidesa a nstring *. Hi ha una solució per resoldre aquest problema?

Respostes:

0 Per a la resposta № 1

Heu de publicar un objecte en lloc d’un mètode de classe:

 let z : String = "0 1/1 2";let q : String = "a b Y";let obj = Performance_ObjCtoCPlusPlus()let res = obj.runfoo(q + "*" + z)print(res)

i una altra observació: no necessiteu convertir cadenes a nstring. Interoperabilitat ràpida amb obj-c per a vostè de forma gratuïta.

BTW, faig servir Swift 2.2

Leave a comment

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *