2016-04-09 2 views
0

У меня проблема с локальным уведомлением, я видел много ответов в stackover, но я не нашел то, что мне нужно.Swift Несколько локальных уведомлений Увольнение только сначала emelent

у меня есть эти данные JSon

ModulesRegistered =   (
         { 
       ModuleCode = "COMP 0304.1"; 
       ModuleName = "Object Oriented Paradigm"; 
       Session = "Session-C "; 
       Timetable =     (
             { 
         Day = Sunday; 
         EndTime = "18.00"; 
         FacultyName = "Renjini Jose"; 
         RoomNo = "IBR 112"; 
         StartTime = "16.00"; 
        } 
       ); 
      }, 
         { 
       ModuleCode = "COMP 0311"; 
       ModuleName = "Operating Systems"; 
       Session = "Session-D "; 
       Timetable =     (
             { 
         Day = Wednesday; 
         EndTime = "20.00"; 
         FacultyName = "Sheela Paudyal"; 
         RoomNo = "IBK 102"; 
         StartTime = "17.00"; 
        } 
       ); 
      }, 
         { 
       ModuleCode = "COMP 10013"; 
       ModuleName = "User Interface Design"; 
       Session = "Session-B "; 
       Timetable =     (
             { 
         Day = Thursday; 
         EndTime = "18.00"; 
         FacultyName = "Mohammed Kaleem"; 
         RoomNo = "AKZ 205"; 
         StartTime = "16.00"; 
        }, 
             { 
         Day = Wednesday; 
         EndTime = "17.00"; 
         FacultyName = "Mohammed Kaleem"; 
         RoomNo = "IBK 009"; 
         StartTime = "15.00"; 
        } 
       ); 
      }, 
         { 
       ModuleCode = "PROJ 0001"; 
       ModuleName = "PROJECT I"; 
       Session = "Session-U "; 
       Timetable =     (
             { 
         Day = Tuesday; 
         EndTime = "20.00"; 
         FacultyName = "Kamal Uddin Sarker"; 
         RoomNo = "AKZ 121"; 
         StartTime = "18.00"; 
        } 
       ); 
      } 
     ); 

я хочу создавать локальные уведомления для каждого элемента данных

Swift код

Controller Код:

override func viewDidLoad() { 
     super.viewDidLoad() 

     let noti = Notification() 
     noti.deleteAll() 

     // Add notification 

     if let GetData = DataService.DataServiceInstance.LoadData[0]["ModulesRegistered"] as? NSArray{ 


      for ModulesRegistered in GetData { 



       if let TimeTable = ModulesRegistered["Timetable"] as? NSArray{ 

         for TimeTableData in TimeTable { 


          if let TimeTableDic = TimeTableData as? Dictionary<String,String> { 

           if let moduleName = ModulesRegistered["ModuleName"] as? String{ 
            noti.createNotification(TimeTableDic["StartTime"]!, day: TimeTableDic["Day"]!, msgBody: "Your \(moduleName) will begin after one hour from now , your classroom address is \(TimeTableDic["RoomNo"]!)") 

           } 




          } 

        } 


       } 

      } 

     } 

Уведомление Класс notification.swift Создание функции Уведом

func createNotification(hour:String, day:String, msgBody:String)->Bool 
{ 

    print(day) 
    let TheTime:String = ("\(day) \(hour) UTC+04:00") 
    let fireDate = TheTime.stringByReplacingOccurrencesOfString(".", withString: ":", options: NSStringCompareOptions.LiteralSearch, range: nil) 


    let dateFormatter = NSDateFormatter() 
    //var dateAsString = "Thursday 20:27 UTC+04:00" 
    dateFormatter.dateFormat = "EEEE HH:mm ZZZZZ" 

    dateFormatter.locale = NSLocale(localeIdentifier: "en_OM") 
    let newDate = dateFormatter.dateFromString(fireDate) 
    print(newDate) 




     let notificationClass:UILocalNotification = UILocalNotification() 
     notificationClass.alertBody = msgBody 
     notificationClass.fireDate = newDate 
     notificationClass.soundName = UILocalNotificationDefaultSoundName 
      notificationClass.repeatCalendar = NSCalendar.currentCalendar() 
     notificationClass.repeatInterval = NSCalendarUnit.Day 
     notificationClass.timeZone = NSTimeZone(name: "UTC") 
     notificationClass.applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1 
     UIApplication.sharedApplication().scheduleLocalNotification(notificationClass) 



      return true 
} 

код работает, но все уведомления стрелять каждый день, и я не хочу, что я хочу, чтобы каждый должен стрелять в свой день.

Благодаря

ответ

0

Ваша проблема вызвана этой линии:

notificationClass.repeatInterval = NSCalendarUnit.Day 

который устанавливает интервал повторения в UILocalnotification. Значение по умолчанию равно 0, что означает, что система не будет переназначать уведомление.

https://developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalNotification_Class/#//apple_ref/occ/instp/UILocalNotification/repeatInterval

Удалить эту линию, и вы будете в порядке.

+0

Привет, я хочу повторять уведомление каждую неделю, ведьма означает, что если у меня есть воскресный класс, уведомление должно срабатывать каждое воскресенье, если я удалю это, он будет срабатывать только один раз. –

+0

set NSCalendarUnit.WeekOfYear как интервал повторения UILocalnotification –

+0

доза эта средняя каждое воскресенье? или каждый конкретный день недели? –

Смежные вопросы