Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
1

Получить NSString из JSON и использовать его как заголовок в TableView

12.06.2014, 19:23. Просмотров 749. Ответов 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

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

заранее спасибо
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2014, 19:23
Ответы с готовыми решениями:

Как получить заголовок Bitmap и его размер в памяти?!
Есть загруженный битмапа в памяти, они находятся в контексте (DC). Как мне...

Получить JSON и передать все его параметры его в Intent. Использован автофильтр
Всем привет. Я тут запутался, помогите разобраться. Стоит задача выполнить...

Как получить значение параметра и использовать его в дальнейшем
Здравствуйте. Помогите пожалуйста , очень срочно нужно, хотя бы,где инфу про...

Функция ввода: как мне получить in, чтобы затем использовать его вне функции?
Здравствуйте, форумчане. У меня появилась проблема. Я создаю подобие движка для...

Как получить из строки JSON токен используя JSON.NET?
Доброго времени суток, Господа. Поскажите пожалуйста. Я никогда не работал с...

3
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
17.06.2014, 20:13  [ТС] 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?
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
18.06.2014, 07:27 3
Лучший ответ Сообщение было отмечено lowlol как решение

Решение

lowlol, а потому, что... почитать в документации
1
noname_club
106 / 97 / 12
Регистрация: 01.05.2013
Сообщений: 603
18.06.2014, 10:21 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 словарей

Вывод русских словарей и массивов в читаемом виде
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2014, 10:21

Видеоадаптер - как можно получить текущий режим дисплея, чтобы использовать его в функции очистки
Такой вопрос: нам необходимо очистить экран.. ест куча способов - сдвиг строк,...

Получить JSON, распарсить и вывести его на экран
Всем доброе утро! Имеется JSON на странице вида Необходимо получить JSON,...

Получить json в приложении и вывести его в listview во фрагмент
Здравствуйте, у меня такая проблема не могу разобраться как получить json в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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