将char *转换为NSString不起作用,UINotification不会正确触发

时间:2014-06-21 02:29:13

标签: objective-c

我正在为我的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个工作,但是我再次使用参数。

知道我做错了什么?

谢谢。

2 个答案:

答案 0 :(得分:0)

在旧版环境中,请使用[NSString stringWithUTF8String:message]。在最近的XCode版本中,您只需编写@(message),这是旧版本的糖。

答案 1 :(得分:0)

您可以使用[NSString stringWithFormat:@"%s",message]。它适用于我的代码。