我正在使用ItemController来提供要在tableview中使用的项目列表。我似乎无法填充控制器,我不知道为什么。
以下是控制器类的代码:
·H
#import <Foundation/Foundation.h>
@class Item;
@interface ItemController : NSObject
@property (nonatomic, copy) NSMutableArray *items;
- (NSUInteger)countOfList;
- (Item*)objectInListAtIndex:(NSUInteger)theIndex;
- (void)addItem:(Item *)item;
@end
的.m
#import "ItemController.h"
#import "Item.h"
@interface ItemController ()
@end
@implementation ItemController
- (NSUInteger)countOfList {
return [self.items count];
}
- (Item *)objectInListAtIndex:(NSUInteger)theIndex {
return [self.items objectAtIndex:theIndex];
}
- (void)addItem:(Item *)item {
[self.items addObject:item];
}
@end
Item.m
@implementation Item
-(id)initWithName:(NSString *)name{
self = [super init];
if (self) {
_name = name;
return self;
}
return nil;
}
@end
我正在使用以下代码填充列表:
ItemController* controller = [[ItemController alloc] init];
for (NSString* key in raw_data) {
NSLog(key); // This outputs the keys fine
[controller addItem:[[Item alloc] initWithName:key]];
}
NSLog([NSString stringWithFormat:@"%d",[controller countOfList]]); // Always 0
答案 0 :(得分:2)
您需要在init方法中初始化数组。
- (id)init {
self = [super init];
if (self) {
self.items = [[NSMutableArray alloc] init];
}
return self;
}
答案 1 :(得分:1)
您需要初始化变量items
。在init方法中,调用self.items = [NSMutableArray new];
并将数组属性从copy
更改为retain
。
我还认为您的班级ItemController
应该是UIViewController
而不是NSObject
。
@interface ItemController : UIViewController
答案 2 :(得分:0)
您不会在任何地方初始化_items
实例变量,因此始终为nil
。在nil
上调用的任何整数返回方法的结果都是0,因此您可以看到计数为0。