среда, 8 января 2014 г.

Полезные методы и функции для IOS разработчиков. Часть 2

В прошлой части полезных методов и функций я описал не все интересные примеры потому, что их очень много и теперь хочу продолжить эту тематику. Так как возможно это полезно вам и мне не даст забыть как это делается :)
Начать хотелось бы с полезного метода хранения некоторых пользовательских настроек в памяти мобильного устройства по средствам NSUserDefaults. Это некий класс с примитивными методами помогающими временно(на момент существования вашего приложения в пределах одной версии) хранить фактически любые данные. Начиная от просто строк до байтовых данных NSData. И так рассмотрим методы записи данных:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:@"Строка любого содержания" forKey:@"some_str"];
В первой строке мы создаём объект класса NSUserDefaults что быработать с его методами. Во второй строке мы присваиваем значение ключу some_str в виде строки с произвольным содержимым. Теперь эта строка будет хранится пока мы не удалим приложение или не обновим его до следующей версии.  Как же теперь достать эти данные при необходимости? На самом деле очень просто:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *str = [userDefaults objectForKey:@"some_str"];
Заведома зная что у нас по этому ключу лежит строка я создал объект имено NSString. Хотя если вы например укажете там Int среда Xcode не выдаст вам ошибки так как объект содержащийся в userDefaults так сказать не индексируется. Но при использовании этого метода в период работы приложения будет ошибка и XCode напишет вам её в консоль. Поэтому надо быть поаккуратнее с подобыми операциями.
Для очистки значения по ключу достаточно присвоить ключу nil подобно тому как мы дели присвоение строки в первом листинге кода.
Ещё один не маловажный момент который может пригодится, а именно знать как выбирать между двумя разными stroyboard когда это необходимо.
Но делать такую проверку и выбор stroyboard необходимо в методе – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions класса AppDelegate.m вашего приложения, Поскольку выбрать его можно будет только до того как он станет для приложения по умолчанию, на лету это сделать нельзя. Допустим у вас уже есть stroyboard созданный XCode при создании нового приложения и вам необходимо добавить ещё один для запуска допустим на мобильных устройствах типа IPhone но с рейтина дисплеем. Создайте файл stroyboard и назовите его к примеру Rstoryboard.
И так открываем выше упомянутый метод и пишем слдеующий код:
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
UIStoryboard *storyBoard;
CGSize result = [[UIScreen mainScreen] bounds].size;
CGFloat scale = [UIScreen mainScreen].scale;
result = CGSizeMake(result.width * scale, result.height * scale);
//проверим высоту экрана телефона
if(result.height == 1136){ //это нам подходит для определения рейтина дисплея
storyBoard = [UIStoryboard storyboardWithName:@"Rstoryboard" bundle:nil];//устанавливаем нужный нам Rstoryboard
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];
}
}
Далее рассмотрим на примере код который позволит из вашего приложения открыть itunes со  страницей вашего приложения например для оценки или написания отзыва.
NSURL *appStoreURL = [NSURL URLWithString:@"ссылка на приложение"];
[[UIApplication sharedApplication] openURL:appStoreURL];
Фактически этот метод откроет safari но сам safari перенаправит пользователя на itunes. Ссылку на приложение легко сформировать нажав на стрелку возле Downlowd  на странице вашего приложения в Itunes, и выбрав copy link.

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

Комментариев нет:

Отправить комментарий