我正在爲發出通知的OpenFl程序編寫iOS本機擴展。出於某種原因,我簡直無法將char *數據類型從參數轉換爲alertBody屬性期望的NSString。將char *轉換爲NSString無法正常工作,UINotification將無法正確激發
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給了我 「警告:格式指定類型 '詮釋',但參數的類型爲 '爲const char *'[-Wformat]」 編譯時。
2編譯但通知文本顯示爲無法理解的東西(〜0y或類似的東西)。
3將不會編譯。
4和5將編譯但通知不會觸發。
6作品,但後來我沒有使用該參數。
任何想法我做錯了什麼?
謝謝。
4和5將是正確的方法。當它在調試器中不能正常工作時通過它,messageString的值是什麼?當您使用方法4或5時,在安排通知之前什麼是messageString?而且,顯然,你的C字符串NULL是以NULL格式終止的嗎? – quellish
我不認爲我可以使用調試器......我使用一個獨立的.mm/.h文件,該文件被編譯成一個NDLL文件,稍後由我的OpenFl項目使用...... – ultranol
關於messageString在通知之前有什麼是預定的,我傳遞了一個簡單的短語,比如Hello world,所以我認爲這就是4或5時應該發生的事情?另外,恐怕我不明白字符串究竟到達了什麼地方,因爲它最初在我的OpenFl源代碼(.hx)中,它以某種方式調用.cpp文件中包含.h的.cpp文件它是一個char *數據類型,但在.hx上是一個String。不過,像這樣的傳遞參數可以和float一起工作。 – ultranol