2016-11-07 4 views
0

Надеюсь, вы, ребята, можете мне помочь, потому что мой мозг горит от мышления: D. Я хочу уведомить пользователя, например. каждые 100 метров. Но я не хочу менять обновление службы определения местоположения. Есть простой способ, но я не в порядке с ним. Я думаю, что есть лучшее решение. Что я до сих пор (это псевдо-код!) Это называется в didUpdateLocationБыстрые места: Огонь каждый X Метров a Извещение

//We want notify User but only 5 times during the movement 
     if distanceToReport < settedDistance { 
      //Store that first Notification is fired 
      if !firstNotificationFired { 
       self.notifyUser(report: report) 

      } 
      if firstNotificationFired && distanceToReport <= 400 { 
       //Store that second Notification is fired 
       self.notifyUser(report: report) 
      } else if secondNotificationFired && distanceToReport <= 300 { 
       //Store that third Notification is fired 
      } else if thirdNotificationFired && distanceToReport <= 200 { 
       //Store that fourth Notification is fired 
      } else if fourthNotifiationFired && distanceToReport <= 100 { 
       //Store that fifth Notification is fired 
      } 


     } 

Есть ли намного лучше и эффективные способы, чем это? Или есть математика или алгоритм, которые могут помочь?

Спасибо.

ответ

0

Одним из способов очистки кода было бы поместить расстояние в переменную и увеличивать при каждом уведомлении, чтобы сократить инструкции if.

if notificationShouldFire && distanceToReport <= targetDistance { 
    self.notifyUser(report: report) 
    targetDistance += targetDistance + 100 
    notificationShouldFire = true 
    // could also use count variable rather than a variable for each notif. 
    firedNotifications += firedNotifications + 1 
} 

// your if statement would change slightly 
if firedNotifications <= 5 && distanceToReport <= targetDistance { 
    // increment and notify here 
} 

Я думаю, что вы можете сделать его немного более эффективным, если вы хотите, но то, что у вас есть это не конец света.

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

  • Нет связанных вопросов^_^