我是Obj-c的新手,我现在正在创建一个tableview来显示我从Json解析的内容。这是代码:
#import "ClasstableViewController.h"
@interface ClasstableViewController ()
@end
@implementation ClasstableViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"JSONRead";
NSString *testUrl = @"example.com";
NSURL *url = [NSURL URLWithString:testUrl];
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10];
NSData *JSONData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSArray *jsonResult = [NSJSONSerialization JSONObjectWithData:JSONData options:kNilOptions error:nil];
self.data = jsonResult;
NSMutableArray *_names = [NSMutableArray array];
for (id item in jsonResult)
[_names addObject:[NSString stringWithFormat:@"%@", item[@"Mon"]]];
self.names = _names;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [self.names count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.textLabel.text = self.names[indexPath.row];
return cell;
}
我已将我的tableview更改为身份检查器中对ClasstableViewController的正确类,我看到其他人已经解决了这个解决方案的问题。
但我还是得到了这个:
-[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fd8835691c0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fd8835691c0'
任何人都知道为什么?请帮帮我
答案 0 :(得分:1)
可能你的NSArray *jsonResult
是一个NSStrings数组,或者包含一些NSStrings作为对象。所以当你这样做时
for (id item in jsonResult)
[_names addObject:[NSString stringWithFormat:@"%@", item[@"Mon"]]];
您认为item
是NSDictionary,但它不是。
答案 1 :(得分:0)
for (id item in jsonResult)
[_names addObject:[NSString stringWithFormat:@"%@", item[@"Mon"]]];
项目为NSString
而不是NSDictionary
,请使用如下
for (id item in jsonResult)
[_names addObject:[NSString stringWithFormat:@"%@", item]];
使用JSONEditor检查JSON。