我想將NSTableView的行復制到剪貼板上。這裏是我的代碼:實現複製方法 - 複製整行
- (void) copy:(id)sender
{
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
// I get warning in the line bellow, unused variable changeCount
NSInteger changeCount = [pasteboard clearContents];
NSInteger row = [self.customersViewController.customersTableView selectedRow];
NSTableColumn *columnFirstName = [self.customersViewController.customersTableView tableColumnWithIdentifier:@"firstName"];
NSCell *cellFirstName = [columnFirstName dataCellForRow:row];
NSArray *objectsToCopy = @[[cellFirstName stringValue]];
// I get warning in the line bellow unused variable OK
BOOL OK = [pasteboard writeObjects:objectsToCopy];
}
此代碼的工作,如果我選擇在NSTableView的行,選定行的名字列的內容確實是在紙板(我可以粘貼在文本編輯器中值)。
然而這段代碼有幾個問題:
1.我得到2個警告,你可以從我的comments.I看到重寫擺脫這樣的警告的代碼。我如何重寫代碼的方式有什麼問題嗎?
// warning one
NSInteger changeCount = 0;
changeCount = [pasteboard clearContents];
// warning 2
BOOL OK = NO;
OK = [pasteboard writeObjects:objectsToCopy];
在上面的代碼我的名字具體其中NSTableView的我使用
... self.customersViewController.customersTableViev ....
但是,如果用戶切換視圖,它可能會使用一些其他NSTableView ...我怎樣才能找出從哪個NSTableView複製方法應該複製噸他排?
如果我評論我使用特定NSTableView並嘗試使用發件人的行,我的應用程序崩潰。
//NSInteger row = [self.customersViewController.customersTableView selectedRow];
NSInteger row = [sender selectedRow];
3.我該如何編寫一個循環來獲取所有列名,而不是專門用手寫一個一個的?我不知道哪個NSTableView的,則還是使用....
NSTableColumn *columnFirstName = [self.customersViewController.customersTableView tableColumnWithIdentifier:@"firstName"];
你想要什麼粘貼,以哪種方式及順序? – Willeke
對問題1的回答:[如何在XCode中掩蓋不需要的「Dead Store」警告?](http://stackoverflow.com/questions/5294761/how-to-mask-an-unwanted-dead-store-warning- in-xcode) – Willeke
數據源或綁定?基於單元格還是基於視圖? – Willeke