如何绑定Obj-C #定义UMLOG_ERROR @"[UM错误]"MonoTouch
本文关键字:quot UM MonoTouch 错误 ERROR 绑定 何绑定 Obj-C UMLOG 定义 | 更新日期: 2023-09-27 17:49:44
我是MonoTouch新手。我目前正试图绑定一个Objective-C库到MonoTouch,到目前为止,我已经做了很多工作,然而,我不知道如何绑定以下代码:
static inline NSString* UmRet_lookup(UmRet c) {
#define URLOOK(a) case a: return @#a;
switch (c) {
URLOOK(UMRET_SUCCESS )
URLOOK(UMRET_NO_READER )
URLOOK(UMRET_SDK_BUSY )
URLOOK(UMRET_ALREADY_CONNECTED)
URLOOK(UMRET_NOT_CONNECTED )
URLOOK(UMRET_LOW_VOLUME )
URLOOK(UMRET_UF_INVALID_STR )
URLOOK(UMRET_UF_NO_FILE )
URLOOK(UMRET_UF_INVALID_FILE )
default: return @"<unknown code>";
}
#undef URLOOK
}
还有下一个代码:
#define UMLOG_ERROR @"[UM Error] "
#define UMLOG_WARNING @"[UM Warning] "
#define UMLOG_INFO @"[UM Info] "
你不能绑定这个,因为它不是真正的 Objective-C代码,而是一些C pre处理器指令。
在这种情况下,您需要将其重写为c#。这看起来像是将错误代码转换成字符串表示。根据你的应用,你可能想使用c#字符串(而不是NSString
)。
static public NSString UmRet_lookup (UmRet c)
{
switch (c) {
case UMRET_SUCCESS : return new NSString ("UMRET_SUCCESS");
case UMRET_NO_READER : return new NSString ("UMRET_NO_READER");
case UMRET_SDK_BUSY : return new NSString ("UMRET_SDK_BUSY");
case UMRET_ALREADY_CONNECTED : return new NSString ("UMRET_ALREADY_CONNECTED");
case UMRET_NOT_CONNECTED : return new NSString ("UMRET_NOT_CONNECTED");
case UMRET_LOW_VOLUME : return new NSString ("UMRET_LOW_VOLUME");
case UMRET_UF_INVALID_STR : return new NSString ("UMRET_UF_INVALID_STR");
case UMRET_UF_NO_FILE : return new NSString ("UMRET_UF_NO_FILE");
case UMRET_UF_INVALID_FILE : return new NSString ("UMRET_UF_INVALID_FILE");
default: return new NSString ("<unknown code>");
}
}
其他定义应该转换为c#静态,例如
static public NSString UMLOG_ERROR = new NSString ("[UM Error] ");
static public NSString UMLOG_WARNING = new NSString ("[UM Warning] ");
static public NSString UMLOG_INFO = new NSString ("[UM Info] ");
再次,你可能想使用c# string
(并把它们变成const
)。