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

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

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

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

12.06.2014, 19:23. Просмотров 661. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получить NSString из JSON и использовать его как заголовок в TableView (Программирование iOS):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
18.06.2014, 07:27 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
lowlol, а потому, что... почитать в документации
1
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 583
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
Привет! Вот еще темы с ответами:

Сформировать заголовок, отправить его, а затем принять ответный заголовок - C++
День добрый, форумчане. Предо мной задача - сформировать заголовок, отправить его, а затем принять ответный заголовок. Первая часть...

.NET 4.x Как использовать библиотеку JSON .NET - C#
Помогите кто нибудь, караул кричать готов. Прилагающуюся документацию просмотрел, весь гугл облазил, как использовать эту библиотеку? (JSON...

Как получить заголовок UDP? - C#
Добрый день. Пишу передачу данных по протоколу UDP. Сервер: int recv; byte data; Socket...

Получить ID из url и использовать его в запросе на удаление данных из БД - C#
в общем когда мы нажимаем на ссылку и переходим на другую страницу, то в url передается какойто id, делается это вот таким образом: ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.06.2014, 10:21
Ответ Создать тему
Опции темы

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