gpt4 book ai didi

objective-c - NSTableView 问题

转载 作者:行者123 更新时间:2023-12-03 17:44:22 24 4
gpt4 key购买 nike

我正在尝试按照本教程进行绑定(bind):

http://andrehoffmann.wordpress.com/2009/09/03/phonebook-tutorial-for-dummiesxcode-3-1-3/

但应用程序在运行时不断崩溃。

在 IB 中,我有一个 NSBUtton、NSTableView、NSArrayController 和一个 NSOBject(名为 AppController)

表格 View 有 3 列。广告名称、颜色和高度。

在 AppController 对象中,我有一个名为 LoadSheet 的操作和三个导出:btnLoadSheet、tblAdList 和 arrayController

在 arrayController 绑定(bind)中,我将其设置为 AppController 并将模型 key 路径设置为 fileList,这是一个 NSMutableArray,我将在其中传递表数据。

在每个表格单元格中,我将它们绑定(bind)到 arrayController 并设置模型键路径,将它们分别设置为 adName、adcol、adHeight。

appController.h 如下所示:

#import <Cocoa/Cocoa.h>

@interface AppController : NSWindowController {

IBOutlet NSArrayController *arrayController;
IBOutlet NSButton *btnAdRunner;
IBOutlet NSButton *btnAddItem;
IBOutlet NSButton *btnDelteItem;
IBOutlet NSButton *btnLoadSheet;
IBOutlet NSButton *btnQuit;
IBOutlet NSTableView *tblAdList;

NSMutableArray* fileList;
}

@property (copy) NSMutableArray* fileList;

- (IBAction)AdRun:(id)sender;
- (IBAction)AddItem:(id)sender;
- (IBAction)DeleteItem:(id)sender;
- (IBAction)LoadSheet:(id)sender;
- (IBAction)QuitApp:(id)sender;
@end

appController.m:

#import "AppController.h"

@implementation AppController

@synthesize fileList;

- (IBAction)LoadSheet:(id)sender {

//define the ad array (this will be pulled from the run sheet
fileList = [NSMutableArray arrayWithObjects:@"Ad1, 1, 2.5", @"Ad2, 1, 3", @"Ad3, 2, 1", @"Ad4, 1, 2.5", @"Ad5, 2, 4", nil];

int i=0;
for(NSString* thisdatarow in fileList) {

//increase i
i++;

//make ad id
NSString* adID = [NSString stringWithFormat:@"ad%d", i];

//convert add data to an array from a string
NSArray* templist = [thisdatarow componentsSeparatedByString:@","];

//get ad items
NSString* adname = [templist objectAtIndex: 0];
NSString* adcols = [templist objectAtIndex:1];
NSString* adheight = [templist objectAtIndex:2];

//declare an array
NSMutableArray* temparray = [[NSMutableArray alloc] initWithObjects: adname, adcols, adheight];

//dump temp array into arrayController
[arrayController addObject:temparray];

}

}

@end

我了解了大局中发生的事情,但我不知道如何将它们组合在一起。我也不确定我是否正确构建了它。例如,当将 arrayController 绑定(bind)到 appController 时,模型 key 路径下拉列表只有 self 作为选项,我必须手动添加 fileList,这对我来说似乎是一个危险信号。另外,他正在从 plist 中获取表 col 绑定(bind)的模型 key 路径,我,呃,将它们从我的屁股中拉出来。我不会从 plist 中获取数据,而只是一个文本文件,由回车符和逗号分隔。我是否将其转储到可变字典中,以便建立键/值关系并使用键进行绑定(bind)?

应用程序编译后一切正常。然后我点击加载表按钮,然后旋转死亡沙滩球。我假设该应用程序不知道我想要它做什么或解决我要求它做什么并决定死掉。

任何朝着正确方向的插入将不胜感激。

最佳答案

In IB I have a NSBUtton, NSTableView, NSArrayController and a NSOBject (named AppController)

您不希望 IB 中的 AppController 实例成为您的 AppController 类的实例吗?如果情况已经如此,我很抱歉(那么我只是理解你的陈述错误)。

For example, when binding arrayController to appController, the Model Key Path drop down only had self as an option, I had to manually add fileList, which kind of seemed like a red flag to me.

我认为这很好(如果我错了,有人纠正我)。当您将 arrayController 绑定(bind)到 appControllerfileList 属性时,您的 arrayController 将访问 fileList 通过KVC mechanism 。因此,只要您的 appController 类(或者至少它的 fileList 属性)符合 KVC 标准,arrayController 就能够很好地看到 appController 的 fileList。 Cocoa 严重依赖编码约定。

我也是 Cocoa 的新手,所以我刚才所说的一切可能都是错的。

关于objective-c - NSTableView 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3980298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com