J'essaie actuellement d'utiliser un morceau de code que j'ai écrit en C++ dans une application iphone. J'ai lu à propos de l'emballage du code C++ en utilisant Objective-C++. la fonction C++ Je suis en train d'appeler prend pour arguments 2 std :: string et retourne un std :: string:Habillage d'un code C++ avec Objective-C++
// 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([[list componentsSeparatedByString:@"*"][0] UTF8String]);
std::string lines = std::string([[list componentsSeparatedByString:@"*"][1] UTF8String]);
std::string result = Performance_CPlusPlus::run(nodelist, lines);
return [NSString stringWithCString:result.c_str()
encoding:[NSString defaultCStringEncoding]];
}
- (void) exp
{
Performance_CPlusPlus::explanation();
}
@end
J'appelle la fonction objective-C++ de rapide
// I am calling the function from the viewController.swift
@IBAction 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)
}
erreur: Impossible de convertir la valeur de type NSString en type d'argument attendu PerformanceObjCtoCPlusPlus. Je pense que l'erreur que je reçois est due au fait que je ne peux pas convertir le type String de swift en NSString *. y a-t-il une solution pour résoudre ce problème?
Avez-vous essayé? http://stackoverflow.com/questions/33118095/cannot-convert-value-of-type-string-to-expected-argument-type-error Je ne suis pas familier avec l'objectif c, mais je ne pense pas que runfoo soit une méthode statique –