这个问题的答案可能很简单,但目前我很难过,任何帮助都会受到欢迎。
我已将上下文菜单附加到表格视图。其中一个菜单选项是删除tableview中的元素。我正在使用NSAlert弹出一个模态窗口来确认删除。我想将tableview中的值传递给警报选择器,所以我有一些用于删除的引用。 这是警报字符串:
[alert beginSheetModalForWindow:_window
modalDelegate:self
didEndSelector:@selector(deleteAlert:code:context:)
contextInfo:s];
每次我尝试传递一个对象作为contextInfo我都会收到警告。如果我试图通过NSInteger的行(从实现代码如下行)我得到这个编译器警告:警告:语义问题:不兼容的整数指针转换发送“NSInteger的”(又名“长”),以类型的参数“无效*” 如果我尝试以变量名形式传递一个字符串,我得到:错误:自动引用计数问题:ARC不允许将Objective-C指针隐式转换为'void *'。我也试过没有运气的字典。
但是如果我传递一个这样的字符串:contextInfo:@“some info”,我没有得到任何错误,我实际上可以在选择器中看到它。这当然对我的需求毫无用处。
那么,如何将表行信息传递给警报,以便我可以在删除选择器中使用它?
答案 0 :(得分:3)
如果要传递行索引,可以将其包装在NSNumber
实例中:
[alert beginSheetModalForWindow:_window modalDelegate:self didEndSelector:@selector(deleteAlert:code:context:) contextInfo:(__bridge void *)[NSNumber numberWithInteger:row]];