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

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
#1

Получить NSString из JSON и использовать его как заголовок в TableView - Программирование iOS

12.06.2014, 19:23. Просмотров 653. Ответов 3
Метки нет (Все метки)

у меня в JSON файле есть вот такая строчка
JSON
1
"titles of sections":["first", "second", "third", "fifth"]
мне нужно поставить каждую строку в заголовок соответствующей секции tableview

я делаю так:
Objective-C
1
2
3
4
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return [[[recievedJSON objectForKey:@"titles of sections"] objectAtIndex:section] stringValue];
}
и у меня приложение вылетает с ошибкой SIGABRT

подскажите как быть?

заранее спасибо
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2014, 19:23     Получить NSString из JSON и использовать его как заголовок в TableView
Посмотрите здесь:
Для чего нужен NSRunLoop и как его использовать? Objective-C
Swift NSString в Int
Objective-C Смена кодировки NSString
Преобразование из NSString в BOOL
Работа с NSArray, NSString Objective-C
Swift Как удалить элемент из TableView
Вырезка из NSString или NSMutableString
NSString *const и инициализация им NSURL
Подсчет слов в строке типа NSString Objective-C
Objective-C Как обновить TableView делая свайп вверх ?
Swift Как связать кнопку Bar Button Item c TableView находящимся в контейнер?
Как динамически изменять высоту TableView при изменяющихся высотах CustomViewCell

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
17.06.2014, 20:13  [ТС]     Получить NSString из JSON и использовать его как заголовок в TableView #2
почему сработало вот так:
Objective-C
1
2
3
4
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return [[recievedJSON objectForKey:@"titles of sections"] objectAtIndex:section];
}
если objectAtIndex возвращает тип id, а мне нужно вернуть NSString?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
18.06.2014, 07:27     Получить NSString из JSON и использовать его как заголовок в TableView #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
lowlol, а потому, что... почитать в документации
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 583
18.06.2014, 10:21     Получить NSString из JSON и использовать его как заголовок в TableView #4
функции декодирования JSON
СИ синтаксис

json_funk.h
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
#import <Foundation/Foundation.h>
 
#ifndef _json_funk
#define _json_funk
 
// JSON кодирование
 
NSMutableArray* json_decode_array(id obj);
NSMutableDictionary* json_decode_dict(id obj);
NSString* json_encode_str(id obj);
NSData* json_encode_data(id obj);
 
#endif
json_funk.m
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
63
64
65
66
67
68
69
70
71
72
73
74
// JSON кодирование
 
#import "json_funk.h"
 
id sys_json_decode(id obj) {
 
    if ([obj isKindOfClass:[NSString class]]) {
        obj = [obj dataUsingEncoding:NSUTF8StringEncoding];
    }
    if ([obj isKindOfClass:[NSData class]]) {
        NSData * data = obj;
        
        const unsigned char* bytes = (const unsigned char*) [data bytes];
        
        // [url]http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%80_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2[/url]
        
        if (data.length>3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) {
            // обнаружен BOM
            data = [data subdataWithRange: NSMakeRange(3, data.length-3)];
        }
        
        if (data.length>3 && ( bytes[0] == '{' || bytes[0] == '[' ) ) {
            
            NSError * error = nil;
            
            id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
            if (error) {
                NSLog(@"JSONDecode ERROR: %@ %@", error, [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
            }
            return result;
        }
    }
    
    return nil;
}
 
NSMutableArray* json_decode_array(id obj) {
    id result = sys_json_decode(obj);
    if ([result isKindOfClass:[NSMutableArray class]]) {
        return result;
    }
    return nil;
}
 
NSMutableDictionary* json_decode_dict(id obj) {
    id result = sys_json_decode(obj);
    if ([result isKindOfClass:[NSMutableDictionary class]]) {
        return result;
    }
    return nil;
}
 
NSData* json_encode_data(id obj) {
    if ([obj isKindOfClass:[NSArray class]] || [obj isKindOfClass:[NSDictionary class]]) {
        
        NSError * error = nil;
 
        id result = [NSJSONSerialization dataWithJSONObject:obj options:0 error:&error];
        if (error) {
            NSLog(@"JSONEncode ERROR: %@", error);
        }
        return result;
    }
    NSLog(@"JSONEncode ERROR: INVALID JSON TYPE");
    return nil;
}
 
NSString* json_encode_str(id obj) {
    NSData * data = json_encode_data(obj);
    if (data) {
        return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    }
    return nil;
}
Мануалы по литералам IOS6+ SDK

http://www.imaladec.com/story/literals

Добавлено через 5 минут
также можете почитать вот эту тему для дебага русских JSON словарей

Вывод русских словарей и массивов в читаемом виде
Yandex
Объявления
18.06.2014, 10:21     Получить NSString из JSON и использовать его как заголовок в TableView
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru