在通知标题中显示功能的结果(Swift 3,iOS10)

JJmoneybags

我正在ios10中从我的Swift 3应用程序触发本地通知,虽然我可以使通知正常运行,但我正在尝试将变量(恰好是从函数返回的值)传递为通知的标题。与其显示该变量的内容,不如将其显示为“(功能)”。

发出通知的结果

我在应用程序本身中使用了与标签文本相同的变量,没有任何问题。

我创建了以下类和类函数来安排通知:

class notificationController {

class func scheduleNotification(at date: Date, header: String, body: String) {

    let calendar = Calendar(identifier: .gregorian)
    let components = calendar.dateComponents(in: .current, from: date)
    let newComponents = DateComponents(calendar: calendar, timeZone: .current, month: components.month, day: components.day, hour: components.hour, minute: components.minute)

    let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: false)

    let content = UNMutableNotificationContent()
    content.title = NSString.localizedUserNotificationString(forKey: header, arguments: nil)
    content.body = body
    content.sound = UNNotificationSound.default()

    let request = UNNotificationRequest(identifier: "textNotification", content: content, trigger: trigger)

    UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
    UNUserNotificationCenter.current().add(request) {(error) in
        if let error = error {
            print("error: \(error)")
        }
    }


}

然后viewdidload(),在与主屏幕关联的视图控制器函数中定义要传递给此函数的变量,然后调用该scheduleNotification函数:

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd/MM/yyyy HH:mm:ss"
        let strDate = "25/01/2017 21:21:00"
        let notificationDate = dateFormatter.date(from: strDate)
        let dayNumber = String(describing: (playerArray[0]?.calculateDays)!)
        let header = "Welcome to day \(dayNumber) of your life"
        var body : String = ""

    if(infoArray.count > 0) {
        body = (infoArray[0]?.text)!
   } else {body = "Doesn't it feel great to be alive?"}

        notificationController.scheduleNotification(at: notificationDate!, header: header, body: body)

PlayerArray是一个包含一个Player CoreData对象的数组。我在Player类中创建了以下函数,以计算出播放器的寿命:

public class Player: NSManagedObject {

func calculateDays() -> Int {

    let currentCalendar = Calendar.current
    guard let dob = currentCalendar.ordinality(of: .day, in: .era, for: self.dob as! Date) else {
        return 0
    }
    guard let today = currentCalendar.ordinality(of: .day, in: .era, for: Date()) else {
        return 0
    }
    let days = today - dob

    return days
}

}

dayNumber变量不显示的任何原因我觉得我很想念这件事。任何想法都是魔术。

麦沙

您需要使用 ()

改变这个:

    let dayNumber = String(describing: (playerArray[0]?.calculateDays)!)

对此:

    let dayNumber = String(describing: (playerArray[0]?.calculateDays())!)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ios10,Swift 3和Firebase推送通知(FCM)

在iOS10中添加自定义本地通知-Swift 3

iOS10 / Swift 3中的NSFetchedResultsController-转换后仍然出现错误消息

如何在iOS10(Swift 3)中获取Now Now歌曲的歌词

Swift 3 iOS10核心数据根据ID检查记录是否已存在

在Swift 3中的iOS9和iOS10上检测屏幕锁定或按下主屏幕按钮

在Swift 3 / iOS10中使用带有自定义字体的动态类型的更好方法

如何使用Swift 3 iOS10为MPMediaPickerControllerDelegate提供带有视图控制器的音乐库?

注册远程通知ios10并捕获APN令牌

本地通知未在ios10中触发

最新的IOS10自动播放功能

MPMediaPickerController在iOS10上显示空白屏幕

今天的扩展iOS10显示更多/更少

UIUserNotificationType在iOS10 Swift 3.0中已弃用

如何删除Appicon徽章,iOS10,Swift

如何清除iOS10 Swift中的UISearchBar背景颜色?

iOS10(Swift 3.0)中不推荐使用UILocalNotification接收功能

Swift iOS检查是否在ios9和ios10中启用了远程推送通知

无法在iOS10和iOS9中接收推送通知

iOS10:从本地通知中点击操作不会将应用程序置于前台

ios10自定义推送通知声音未播放

iTunes Store构建后,发布iOS10 / Xcode 8.0“缺少推送通知权利”错误

如何在iOS10中配置通知(与使用GCM ID的Android相同)?

注册推送通知Swift 3 + iOS 10

为什么当应用程序为前台时显示推送通知?(iOS10 / iPhone 7)

iOS10是否删除了从捆绑软件读取SQLite数据库的功能?

我可以在IOS10的UIImageView中显示GIF图像吗?

iOS10 UIImagePickerController嵌入为ChildViewController,未正确显示其子视图

clipsToBounds导致UIImage无法在iOS10和XCode 8中显示