Я пытаюсь следовать этому руководству по связыванию:
http://andrehoffmann.wordpress.com/2009/09/03/phonebook-tutorial-for-dummiesxcode-3-1-3/
, но приложение продолжает падать во время выполнения.
В IB у меня есть NSBUtton, NSTableView, NSArrayController и NSOBject (с именем AppController)
В табличном представлении есть 3 столбца.Имя объявления, столбец и высота.
В объекте AppController у меня есть действие под названием LoadSheet и три выхода, btnLoadSheet, tblAdList и arrayController
В привязках arrayController я устанавливаю его в AppController и задаю ключ моделиПуть к fileList, который является NSMutableArray, куда я буду передавать данные моей таблицы.
В каждой ячейке таблицы я связываю их с 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 к appController раскрывающийся список «Путь к ключу модели» содержал только «self» в качестве опции, мне пришлось вручную добавлять fileList, что мне показалось красным флагом.Кроме того, он получает путь ключа модели для связывания столбцов таблицы из списка, я их вытаскиваю из своей задницы.Я не собираюсь получать данные из списка, просто текстовый файл, разделенный символами возврата каретки и запятыми.Должен ли я сбросить это в изменяемый словарь, чтобы я мог установить отношение ключ / значение и использовать ключи для моей привязки?
Когда приложение компилируется, оно выходит нормально.Затем я нажимаю кнопку загрузки листа и нажимаю кнопку «пляжный мяч смерти».Я предполагаю, что приложение не имеет ни малейшего представления о том, что я хочу, чтобы оно делало или решало то, что я прошу, и решает просто умереть.
Любые толчки в правильном направлении приветствуются.