试图弄清楚为什么json segue从tableviewcontroller到detailviewcontroller不起作用。是否有一个NSLog来查看数据是否通过,这就是dvc中出现的内容。
"data.detail" NSLog:
(
{
emails = {
10 = j;
11 = k;
12 = l;
9 = i;
};
links = {
1 = a;
2 = b;
3 = c;
4 = d;
};
location = {
13 = m;
14 = n;
15 = o;
16 = p;
};
numbers = {
5 = e;
6 = f;
7 = g;
8 = h;
};
}
)
然后我......
尝试将json数据转换为detailviewcontroller中的tableview。
NSString *rawString = [NSString stringWithFormat:@"%@", data.detail];
NSString *jsonString = rawString;
NSData *JSONdata = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *jsonError = nil;
但是将JSON转换为NSData,然后NSDictionary仅在NSLog中输出“null”。
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:JSONdata options:0 error:&jsonError];
NSArray *items = [dic valueForKeyPath:@"email"];
NSLog(@"dic %@", dic);
NSLog(@"items %@", items);
帮助!非常感谢。
答案 0 :(得分:1)
从
更改以下代码行NSArray *items = [dic valueForKeyPath:@"email"];
到
NSArray *items = [dic valueForKeyPath:@"emails"];
如果你仍然没有使用nslog而不是更改
NSString *rawString = [NSString stringWithFormat:@"%@", data.detail];
喜欢这个
NSString *rawString = @"{\"emails\" :{\"10\" : \"j\",\"11\" : \"k\",\"12\" : \"l\",\"9\" : \"i\"},\"links\" :{\"1\" : \"a\",\"2\" : \"b\",\"3\" : \"c\",\"4\" : \"d\"}}";
答案 1 :(得分:0)
您好JSON
无效,因此无法正常工作......
所以首先看一下JSON
:http://json.org/example
然后你可以在这里试试JSON
:jsonlint.com
以下是JSON
格式良好的开头:
{
"emails": {
"9": "i",
"10": "j",
"11": "k",
"12": "l"
},
"links": {
"1": "a",
"2": "b",
"3": "c",
"4": "d"
}
}
主要将=
更改为:
和;
更改为,
并添加了一些"
答案 2 :(得分:0)
NSString *rawString = [NSString stringWithFormat:@"%@", data.detail];
有两种可能性,而且您没有显示足够的信息:
data.detail是一个NSString。在这种情况下,这行代码完全没用,因为它只是制作字符串副本的一种昂贵方式,根本不包含任何JSON。
或者data.detail是一个NSDictionary。在这种情况下,您的整个代码绝对是错误的废话,因为在这种情况下您有一个NSDictionary,尝试将其转换为代码不起作用的JSON字符串,将该字符串转换为NSData,并将NSData转换回字典,这是你开始的地方!
出于纯粹的病态好奇心,这是哪一个?