Attualmente sto cercando di utilizzare un pezzo di codice Scriverò in C ++ in un’applicazione per iPhone. Ho letto sulla confezione del codice C ++ con Objective-C ++. La funzione C ++ che chiamò la chiamata prende per gli argomenti 2 std :: stringa e restituisce una std :: stringa:

// 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

chiamo l’obiettivo- Funzione C ++ di 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)}

Errore: impossibile convertire il valore NSString nel tipo di argomento previsto per il tipo di argomento performancebjctocplusplus. Penso che l’errore che ottengo sia perché non posso convertire il tipo di stringa di Swift in NSString *. C’è una soluzione per risolvere questo problema?

Risposte:

0 per risposta № 1

È necessario eseguire piuttosto un oggetto anziché un metodo di 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)

E un’altra osservazione: non è necessario convertire la stringa su NSString. Swift Interoperabilità con OBJ-C per te gratuitamente.

BTW, uso Swift 2.2

Leave a comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *