0

我有一个 nsmutablearray,我试图在表格视图上显示。我有一个 uiviewcontroller 并手动添加了表格视图。我已经通过将委托和源拖到文件所有者来在 xib 上添加委托和源。这是我的 .h 文件

#import <UIKit/UIKit.h>   

@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
{
    IBOutlet UILabel *label;
    IBOutlet UITextField *texto;
    IBOutlet UIWebView *link;
    //IBOutlet UILabel *links;
    IBOutlet UITextView *links;    
    // IBOutlet UITableView *tableView;
    NSMutableArray *jsonArray;
}

@property (nonatomic,retain) IBOutlet UITableView *tableView;
//@property (nonatomic,retain) NSMutableArray *jsonArray;

-(IBAction)button;
-(IBAction)field;

-(void)populateArray;

@end 

这是我的 .m 文件

#import "ViewController.h"

@interface ViewController ()
@end

@implementation ViewController

NSString *one;
NSString *jsonreturn;

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSURL *url = [NSURL URLWithString:@"www.myphpfile.com"];
    jsonreturn = [[NSString alloc] initWithContentsOfURL:url]; // Pulls the URL
NSLog(jsonreturn); // Look at the console and you can see what the restults are
    NSData *jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
    NSError *error = nil;
    jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:&error];

    NSLog(@"jsonList: %@", jsonArray);

    if(!jsonArray)
    {
        NSLog(@"Error parsing JSON:%@", error);
    }
    else
    {
        // Exception thrown here.
        for(NSDictionary *item in jsonArray)
        {
            NSLog(@"%@", item);
        }
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{    
    return [jsonArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell==nil) 
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    NSLog(@"Im HERE!!!");

    cell.textLabel.text = [jsonArray objectAtIndex:[indexPath row]];
    NSLog(@"Cell is %@", [jsonArray objectAtIndex:indexPath.row]);
    return cell;
}

我的问题是,我无法让单元格显示日期,我有 ns 日志,它显示它正在拉动它,我也得到一个线程 1,断点 1.1 错误,其中创建了单元格并发出警告行sayin tableView 是本地的并隐藏实例变量,有什么想法吗?谢谢您的帮助!

更新:我的程序要编译,但它抛出异常:2013-03-26 22:28:48.691 Hello[79888:11303] *由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:] :这个类对于键 tableView 不符合键值编码。

这是否与我提供表格的信息或我错误地创建表格有关?再次感谢!

4

5 回答 5

0

首先分配你的 NSMutableArray,像这样“ ArrayName = [[NSMutableArray alloc] init];

于 2013-03-26T05:29:17.440 回答
0

您收到警告是因为您调用了一个实例变量tableView,并且在表视图数据源方法tableView中也作为参数传入。更改此变量名称或实例变量名称将解决问题。因为他们都指的是同一件事,所以没关系。

如果它只是停在一个点上说Stopping at Breakpoint 1你可能已经设置了一个断点。它看起来像一个蓝色箭头标记,位于代码的左侧。您可以通过再次单击它(变为较浅的阴影)或删除它来禁用它 - 将断点拖出或右键单击断点并删除。

断点

于 2013-03-26T04:07:16.390 回答
0

查看你的 tablview 的变量名

IBOutlet UITableView *tableView

它与 UITableView 使用的内置方法相同

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

这就是为什么它给你警告,“tableView 是本地的并且隐藏实例变量”

为了避免它,只需将您的 UITableView 变量名更改为“myTableView”

于 2013-03-26T04:10:50.797 回答
0

如果您已通过界面构建​​器/故事板添加了 tableview,请尝试添加:

@synthesize tableView;

在 .m 文件中的 @implementation 下。然后确保在 IB 中正确连接了 tableview。(以 View Controller 作为数据源和委托,然后将 VC 形成为 tableview 作为 tableView。)

于 2013-03-26T03:10:38.840 回答
0
NSString *one;
NSString *jsonreturn;

这两种说法缺乏标准化。

如果你没有使用 ARC,jsonreturn 会泄漏。

于 2013-03-26T03:57:29.970 回答