我正在尝试通过NSMutableArray
打印出NSLog
中的对象列表,但出于某种原因,它似乎为空。基本上,我有一个待办事项列表,当用户输入要添加到tableview的新字符串时,它还会将该项添加到NSArray中,以便将其保存到设备中。
AddToDoItemViewController.m
#import "AddToDoItemViewController.h"
#import "ToDoItem.h"
@interface AddToDoItemViewController ()
@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *saveButton;
@end
@implementation AddToDoItemViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.toDoItem.itemList = [[NSMutableArray alloc] init];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
if (sender != self.saveButton) return;
if (self.textField.text.length > 0) {
self.toDoItem = [[ToDoItem alloc] init];
self.toDoItem.itemName = self.textField.text;
self.toDoItem.completed = NO;
NSLog(@"Trying to add to array: %@", self.toDoItem.itemName);
[self.toDoItem.itemList addObject:self.toDoItem.itemName];
NSLog(@"Array contents: %@", self.toDoItem.itemList);
}
}
@end
AddToDoItemViewController.h
#import <UIKit/UIKit.h>
#import "ToDoItem.h"
@interface AddToDoItemViewController : UIViewController
@property ToDoItem *toDoItem;
@end
ToDoItem.h
#import <Foundation/Foundation.h>
@interface ToDoItem : NSObject
@property NSString *itemName;
@property BOOL completed;
@property (readonly) NSDate *creationDate;
@property NSMutableArray *itemList;
@end
现在从我的AddToDoItem.m文件中,当我使用NSLog
尝试输出数组时,我得到了这个:
2016-02-24 01:04:49.668 ToDoList[4025:249117] Trying to add to array: ok
2016-02-24 01:04:49.669 ToDoList[4025:249117] Array contents: (null)
****'ok'是我输入的文字*****
答案 0 :(得分:3)
在添加数组之前,您没有初始化数组,添加self.toDoItem.itemList = [NSMutableArray new];
编辑:
哦,我发现你在viewDidLoad中添加了self.toDoItem.itemList = [[NSMutableArray alloc] init];
,但这不适合放置它,它应该在self.toDoItem = [[ToDoItem alloc] init];
之后或在ToDoItem
的init方法中} p>
答案 1 :(得分:0)
首先,您需要在ToDoItem.m
创建一个init方法- (id)init {
self = [super init];
if (self) {
// Any custom setup work goes here
self.itemList = [[NSMutableArray alloc] init];
}
return self;
}
然后再次运行你的项目。
答案 2 :(得分:0)
在ToDoItem初始化之前,您正在初始化Array(itemList),因此初始化的数组仍为零。所以,它不能存储任何对象。
修改代码如下,
self.toDoItem = [[ToDoItem alloc] init];
self.toDoItem.itemList = [[NSMutableArray alloc] init];
您可以在viewDidLoad或Segue Method
添加上面的代码行 希望它可以帮到你。