Форум программистов, компьютерный форум CyberForum.ru

О написании чистого кода - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Facebook api xcode 6.3 http://www.cyberforum.ru/objective-c/thread1571290.html
Делаю как все описанно в документации. Редактирую info.plist , импортирую <FBSDKCoreKit/FBSDKCoreKit.h> и <FBSDKLoginKit/FBSDKLoginKit.h>, если запустить, то все работает, а если начать прописывать методы , к примеру FBSDKLoginButton *loginButton = init]; , то выдает ошибку: "clang: error: linker command failed with exit code 1 (use -v to see invocation)" ,подскажите пожалуйсто, что делаю не так)
Objective-C Парсинг JSON из локального файла Доброго времени суток! У меня есть локальный JSON файл в проекте и мне надо из него достать данные. но почему-то, когда я пытаюсь вывести эти данные в консоль у меня пишет "(null)" в консоли, вместо отображения данных :( Выручите пожалуйста! {"cities":} Вот код Objective-C NSString *filePath = pathForResource:@"citiesJSON" ofType:@"json"]; NSString *myJSON = ... http://www.cyberforum.ru/objective-c/thread1570741.html
Objective-C Системные настройки звука
Доброго времени, кто может помочь. Нужно в osx, из приложения изменить звук уведомления, может сто подсказать?
Отслеживание мыши по экрану Objective-C
Доброго дня, есть еще одно. Как можно поймать координаты мыши относительно всего экрана? Добавлено через 49 минут Решение, кому надо ;
Objective-C Программно открыть окно http://www.cyberforum.ru/objective-c/thread1563564.html
Доброго времени суток, возникла такая вот беда. Нужно программно вызвать второе окно при старте приложения. Нагуглил вот такую вещь NSStoryboard *storyBoard = ; NSWindowController *win=; statusItemPopover = init]; statusItemPopover.windowController = win; ;
Objective-C Unknown class in Interface Builder file Здравствуйте,столкнулся с проблемой.Создал 2 view controller при переходе через кнопку на второй у меня выскакивает Unknown class мойКлас in Interface Builder file. Сомневаюсь что дело в коде,так-как писал ево с уроков Стэнфорда.Но пусть будет -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if() { if(]) { TextStatsViewController... подробнее

Показать сообщение отдельно
residentkms
21 / 21 / 8
Регистрация: 20.10.2013
Сообщений: 138
Завершенные тесты: 1

О написании чистого кода - Objective-C

11.11.2015, 17:43. Просмотров 543. Ответов 9
Метки (Все метки)

Вообщем, такая проблема.
Мне не нравится подобные нагромождения из if-ов, добавления и удаления оверлеев, бесконечных диалоговых окон:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
UIView *overlay = [[UIView alloc]initWithFrame:self.view.frame];
    overlay.backgroundColor = [UIColor colorWithWhite:0.5f alpha:0.5f];
    overlay.userInteractionEnabled = YES;
    [self.view addSubview:overlay];
    
    UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    activity.color = [UIColor blackColor];
    activity.center = self.view.center;
    [self.view addSubview:activity];
    [activity startAnimating];
    
    NSString *parameters = [@"" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@""]];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    request.HTTPMethod = @"post";
    request.HTTPBody = [parameters dataUsingEncoding:NSUTF8StringEncoding];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response,
                                                                                                            NSData * _Nullable data,
                                                                                                            NSError * _Nullable connectionError) {
        [overlay removeFromSuperview];
        [activity removeFromSuperview];
        
        if (!connectionError) {
            if ([(NSHTTPURLResponse *)response statusCode] == HTTP_OK) {
                @try {
                    NSError *error;
                    _info = [NSJSONSerialization JSONObjectWithData:data
                                                            options:NSJSONReadingMutableContainers
                                                              error:&error];
                    if (error) {
                        @throw [NSException exceptionWithName:@"Parse error"
                                                       reason:@"Unknown"
                                                     userInfo:nil];
                    }
                    
                    ////
                }
                @catch (NSException *exception) {
                    _info = nil;
                    [[[UIAlertDialog alloc]initWithStyle:UIAlertDialogStyleAlert
                                                   title:@"Ошибка"
                                                 message:@"Произошла неизвестная ошибка"
                                              closeTitle:@"OK"] showInViewController:self];
                }
            } else if ([(NSHTTPURLResponse *)response statusCode] == HTTP_BAD_REQUEST) {
                [[[UIAlertDialog alloc]initWithStyle:UIAlertDialogStyleAlert
                                               title:@"Ошибка"
                                             message:@"Проверьте правильность ввода"
                                          closeTitle:@"OK"] showInViewController:self];
            } else {
                [[[UIAlertDialog alloc]initWithStyle:UIAlertDialogStyleAlert
                                               title:@"Ошибка"
                                             message:@"Произошла неизвестная ошибка"
                                          closeTitle:@"OK"] showInViewController:self];
            }
        } else {
            [[[UIAlertDialog alloc]initWithStyle:UIAlertDialogStyleAlert
                                           title:@"Ошибка"
                                         message:@"Ошибка соединения"
                                      closeTitle:@"OK"] showInViewController:self];
        }
    }];
Такое повсюду, и это не самый тяжелый случай.
Как в таких случаях рефакторить? Инкапсулировать в какой то класс (что то типа MyHTTPClient) а в нем все в отдельные методы под каждый реквест? Или как то еще мб?
Или может быть есть где то красиво выглядящие сорцы, на которые можно поглазеть и чему то научиться?
Вообщем, очень нужна помощь
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru