我正在为我的OpenFl程序编写一个iOS原生扩展,用于发出通知。出于某种原因,我根本无法将char *数据类型从参数转换为alertBody属性所期望的NSString。
const void issueNotification (const char* message) {
UILocalNotification* localNotification;
localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:(1/6)];
//NSString* messageString = [NSString stringWithFormat:@"%c" , message]; // 1
//NSString* messageString = [NSString stringWithFormat:@"%s" , message]; // 2
//std::string messageString = std::string(message); // 3
//NSString *messageString = [NSString stringWithCString:message encoding:NSUTF8StringEncoding]; // 4
//NSString *messageString = [[NSString alloc] initWithCString:message encoding:NSUTF8StringEncoding]; // 5
NSString *messageString = @"AAAAA"; // 6
localNotification.alertBody = messageString;
localNotification.soundName = UILocalNotificationDefaultSoundName;
localNotification.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
1给我“警告:格式指定类型'int',但参数在编译时具有类型'const char *'[-Wformat]”。
2编译,但通知文本显示为难以理解的东西(〜0或类似的东西)。
3将无法编译。
4和5将编译但通知不会触发。
6个工作,但是我再次使用参数。
知道我做错了什么?
谢谢。
答案 0 :(得分:0)
在旧版环境中,请使用[NSString stringWithUTF8String:message]
。在最近的XCode版本中,您只需编写@(message)
,这是旧版本的糖。
答案 1 :(得分:0)
您可以使用[NSString stringWithFormat:@"%s",message]
。它适用于我的代码。