在Objective-C中将数据传递到tableView并了解对象范围
我已经和straight objective-c合作了几个星期了,最近我一直在开发小型的cocoa mac应用程序来开始这方面的工作。我现在正试图找出我在IB和Cocoa中遇到的几个怪癖,我相当确定这两个怪癖都与对象范围有关 下面是我的文件,其他导入没有什么特别之处。奇怪的是,我的list变量将记录两个不同的数组,即使我使用self将类实例作为目标。也许我用错了这个关键字,或者我只是遗漏了一些明显的东西,但无论如何,我的列表var肯定是由update和create方法独立跟踪的 我的第二个问题是,如果不是由iAction触发,我的create方法将无法工作。目前,我已将其链接到一个单独的按钮,以使用update方法重新加载我的表视图。为什么我的create方法在我将其设置为void并直接从另一个控制器调用该方法时无法工作在Objective-C中将数据传递到tableView并了解对象范围,objective-c,macos,cocoa,interface-builder,Objective C,Macos,Cocoa,Interface Builder,我已经和straight objective-c合作了几个星期了,最近我一直在开发小型的cocoa mac应用程序来开始这方面的工作。我现在正试图找出我在IB和Cocoa中遇到的几个怪癖,我相当确定这两个怪癖都与对象范围有关 下面是我的文件,其他导入没有什么特别之处。奇怪的是,我的list变量将记录两个不同的数组,即使我使用self将类实例作为目标。也许我用错了这个关键字,或者我只是遗漏了一些明显的东西,但无论如何,我的列表var肯定是由update和create方法独立跟踪的 我的第二个问题是
#import "Lesson_14AppDelegate.h"
#import "TableViewController.h"
#import "Transaction.h"
@implementation TableViewController
@synthesize list, transaction;
- (id) init
{
self = [super init];
if (self)
{
Transaction *aTransaction = [[Transaction alloc] init];
transaction = aTransaction;
list = [[NSMutableArray alloc] init];
}
return self;
}
- (NSInteger) numberOfRowsInTableView: (NSTableView *) tableView
{
return [self.list count];
}
- (id) tableView: (NSTableView *) tableView objectValueForTableColumn:(NSTableColumn *) tableColumn row: (NSInteger) row
{
Transaction *t = [self.list objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
return [t valueForKey:identifier];
}
- (IBAction) update: (id) sender
{
[self.list addObject: self.transaction];
[tableView reloadData];
NSLog(@"list: %@", self.list);
}
- (IBAction) create: (float) amount : (NSString *) description
{
[self.list addObject: description];
[tableView reloadData];
NSLog(@"list: %@", self.list);
}
- (void) dealloc
{
[self.list release];
[self.transaction release];
[super dealloc];
}
@end
为什么您的
update
方法执行addObject
?这不是应该修改数组的内容而不是添加到数组中吗?逻辑上是的。。我以解决此错误的名义暂时终止了我的体系结构,但是因为我的按钮点击被附加到更新,并且我的创建方法被编程调用。我不明白为什么调用之间列表的日志记录会有所不同;你的代码在我看来还可以。如果你想看看完整的应用程序,它就在这里:当你使用它时,你可以填写数量和描述(确保模糊或点击每个字段设置变量),然后你会看到添加按钮和更新按钮分别触发创建和更新,并创建不同的数组