Comments 45
Не знаю почему, но первым делом кинулся искать опечатки :)
Специально для вас, там есть одна эпик-очепятка :)
«пассивы»? :)
Именно! Не стал исправлять её — больно забавно получилось :)
Еще можете попытаться угадать как я сделал скриншот синей протяжки в Xcode. Чуть пальцы рук не свернул :)
Я обычно в таких случаях одной рукой тяну, а другой жму скриншот всего экрана (Cmd+Shift+3), чтобы затем вырезать нужную часть просмотром :)
Это еще ладно, я как-то одной рукой на айпаде скриншот снимал.
Это еще ладно, я как-то одной рукой на айпаде скриншот снимал.
Еще можете попытаться угадать как я сделал скриншот синей протяжки в Xcode. Чуть пальцы рук не свернул :)Небольшой совет для здоровья пальцев рук:

Будете в App Store выкладывать?
Пока что слишком простенькая программулька. Вот если синхронизацию с iOS сделаем — будет иметь смысл.
Там подобного хватает, например macappsto.re/us/7GWfz.m
Заголовок вводит в заблуждение. Я подумал, что до этого на OS X не было подобных программ.
Этот кусок кода слегка жестковат, но он делает то что должен :)
Стоило немного погуглить:
unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;
NSDateComponents *breakdownInfo = [sysCalendar components:unitFlags fromDate:date1 toDate:date2 options:0];
// breakdownInfo.month месяц
// breakdownInfo.day день
//…
// breakdownInfo.second секунды
unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;
NSDateComponents *breakdownInfo = [sysCalendar components:unitFlags fromDate:date1 toDate:date2 options:0];
// breakdownInfo.month месяц
// breakdownInfo.day день
//…
// breakdownInfo.second секунды
Этот вариант делает совсем не то. Я выводил сколько времени прошло: 2s (2 сек), 5m (5 мин), 3h (3 часа), 4d (4 дня)
UPDATE: Все равно придется городить толпу if-ов дальше…
UPDATE: Все равно придется городить толпу if-ов дальше…
Эту штуку я помню с тех пор как писал свой календарь в апстор :)
Переписал код с использованием вашего кода и блока ифов:
По идее можно сделать массив селекторов и пробегать по нему в цикле, но я боюсь они будут некорректно обрабатывать возвращаемое значение нe id типа.
NSString * timeStr = nil;
if (components.year)
timeStr = [NSString stringWithFormat:@"%dy",(int)components.year];
else if (components.month)
timeStr = [NSString stringWithFormat:@"%dM",(int)components.month];
else if (components.day)
timeStr = [NSString stringWithFormat:@"%dd",(int)components.day];
else if (components.hour)
timeStr = [NSString stringWithFormat:@"%dH",(int)components.hour];
else if (components.minute)
timeStr = [NSString stringWithFormat:@"%dm",(int)components.minute];
else
timeStr = [NSString stringWithFormat:@"%ds",(int)components.second];
По идее можно сделать массив селекторов и пробегать по нему в цикле, но я боюсь они будут некорректно обрабатывать возвращаемое значение нe id типа.
Набросайте свой вариант этого алгоритма на любом императивном языке программирования… Так будет конструктивнее…
python:
from datetime import timedelta
TEST = 7200
td = timedelta(seconds=TEST)
years, months, hours, minutes = td.days // 360, td.days // 31, td.seconds // 3600, td.seconds // 60
print (
years and 'years %s' % years or
months and 'months %s' % months or
td.days and 'days %s' % td.days or
hours and 'hours %s' % hours or
minutes and 'minutes %s' % minutes or
'seconds %s' % td.seconds
)
Если кому нужен продвинутый менеджер буфера обмена, в Alfred'е есть встоенный — поиск, предпросмотр, все, что угодно.


Вспомнилось, что когда на Builder C++ делал точно такую же программу. По сути была первой, относительно «полезной», после прочтения мануалов. Развития программа толком не получила. Так… по мелочи.
Ваша программа требует MacOS 10.8. Почему не поставить 10.7 или 10.6? Я понимаю, что это пока домашняя поделка «для себя», но это очень распространенная ошибка и в сторе, когда люди просто оставляют по умолчанию таргетом самую новую ОС и тем самым теряют много потенциальных пользователей.
Спасибо за пост.
Я начинающий iOS разработчик, и очень жду продолжения!
Я начинающий iOS разработчик, и очень жду продолжения!
Немного оффтоп, но всё же, для Windows есть подобное?
побольше бы статей по написанию программ для mac. Обычно уклон на ios идет, хоть разница не очень велика, но все же интересно направление такое.
Я пользуюсь вот этим jumpcut.sourceforge.net/
Чуть было значки не перепутал))

Выскажусь не совсем по теме, но кому-то пригодится: имхо самые удобные реализации под OS X: copyless и встроенная в alfred.
Sign up to leave a comment.
Первая программа для OS X своими руками — менеджер буфера обмена