2014-01-29 55 views
1

我想弄清楚如何將NSArray返回到統一的c#。我沒有找到任何東西。用於Unity的iOS插件將NSArray返回到c#

我在.mm上有一個函數,它有一個NSArray返回,但我不知道我返回的是哪種類型,以及如何從Unity中獲取它。

我的NSArray包含NSString。

+0

可能有直接實現此目的的方法,但大多數開發人員似乎通過JSON – Kay

+0

感謝@Kay,我認爲使用JSON返回一個大字符更容易,而不是試圖弄清楚如何在另一個字符中執行此操作方法。 – Dyego

+0

@Kay,你知道如何從c#中的obj-c獲得[const char *]? – Dyego

回答

0

正如問題的評論部分所述,JSON是實現這一目標的最簡單方法。在您的Objective-C類IOS中。 毫米你需要的東西,如:

extern "C" { 
    char* GetMyJSONStringIOS() { 
     MyClass* myInstance = [[MyClass alloc] init] autorelease]; 
     NSString* str = [myInstance convertToJSON]; 
     char* s = cStringCopy([str UTF8String]); 
     return s; 
    } 
    char* cStringCopy(const char* string) { 
     char* res = (char*)malloc(strlen(string) + 1); 
     strcpy(res, string); 
     return res; 
    } 
} 

在你的C#類IOSWrapper.cs

[DllImport ("__Internal")] 
static extern string GetMyJSONStringIOS(); 

public static string GetMyJSONString() { 
    string json; 
#if !UNITY_EDITOR && UNITY_IPHONE 
    json = GetMyJSONStringIOS(); 
#else 
    json = "Dont know"; 
#endif 
    } 
    return json; 
} 

方法cStringCopy在內部使用從爲const char *複製到char *。

+0

感謝您的幫助@Kay。但我找到了另一種方式。我將我的NSArray轉換爲JSON,並將其作爲const char *返回。在Unity中,我使用Marshal.PtrToStringAnsi()來轉換Intptr的返回值。它工作正常!之後,我可以使用JSON解析來獲取我的值。 – Dyego

+0

@Dyego你應該回答你自己的問題。以便其他人可以使用該方法。你發現的那個人。 –

相關問題