“无法编译连接:”错误是啥意思?

Posted

技术标签:

【中文标题】“无法编译连接:”错误是啥意思?【英文标题】:What does the "Couldn't compile connection:" error mean?“无法编译连接:”错误是什么意思? 【发布时间】:2012-03-03 10:39:35 【问题描述】:

我从 Xcode 收到以下错误:

Couldn't compile connection: <IBCocoaTouchOutletConnection:0x401538380
<IBProxyObject: 0x40154a260> => categoryPicker => <IBUIPickerView: 0x4016de1e0>>

我已将其缩小到情节提要中的单个插座连接。我的代码(大约 30 个具有许多其他连接的视图)编译并运行良好,直到我将 UIPicker 的连接添加到视图的 categoryPicker 属性。选择器本身也可以正常工作,我无法重新加载它而不使此连接正常工作:

@interface FiltersTableViewController : UITableViewController <UIPickerViewDataSource, UIPickerViewDelegate> 
    NSFetchedResultsController *fetchedResultsController;
    FilterTableViewController *filterView;

    AppDelegate *appDelegate;
    NSManagedObjectContext *managedObjectContext;       


@property (nonatomic, strong) FilterTableViewController *filterView;
@property (nonatomic, strong) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;

@property (nonatomic, weak) IBOutlet UIPickerView *categoryPicker;

- (void)configureCell:(FilterTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
- (void)performFetch;

@end

UIPickerView 位于 UITableViewCell 中。这是情节提要的图像,从“categoryPicker”到“FiltersTableViewController”的连接会导致错误:

感谢您提供有关如何调试它的任何想法或建议!

编辑: 我删除了连接并在 numberOfComponentsInPickerView 中添加了一行:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 

    categoryPicker = pickerView;

    return 1;

现在可以正常工作了!但我想了解连接无法正常工作的原因以及该错误消息的含义。现在这对我来说似乎是一个杂物,因为我在其他任何地方都使用 IB 连接来获取对象引用。

编辑 2: 连接原型单元会生成此错误:非法配置:连接“单元”不能将原型对象作为其目标。不确定这是否是 Xcode 4.5 中的新功能。

【问题讨论】:

似乎问题是,categoryPicker 是“弱”而 FilterTableViewController 是“强”。尝试使 categoryPicker 也变得强大并检查它是否有效 谢谢。刚试过,但它并没有改变任何东西。 (我的印象是 IBOutlets 应该很弱......我从这里得到:raywenderlich.com/5773/beginning-arc-in-ios-5-tutorial-part-2)。 是的,这在技术上是正确的,对不起,我的错!正如我刚刚在 Apple 文档中看到的那样! 所以你只想将你的 ViewController 设置为 categoryPicker 的代表......我说的对吗?你试过 categoryPicker.delegate = self; ? ViewController 已经是一个委托,并且该部分有效。问题是 categoryPicker 在没有来自 IB 的连接的情况下为零,我无法在其上调用 reloadAllComponents。实际上,我确实只是得到了一些工作,但这似乎是一个杂物。我将在几秒钟内将其添加到问题中... 【参考方案1】:

问题是这是一个原型单元。在其中有一个东西的出口是没有意义的,因为它不是一个真正的细胞:它是一个可能有几十个或数百个细胞的模型,在这种情况下出口会指向哪个?

【讨论】:

谢谢!现在这是有道理的,我为这类事情使用连接的其他地方使用静态单元格。 马特,谢谢你的回答。我现在被困住了。我如何在没有插座的情况下解决标签按钮等这些对象? 使用标签并调用viewWithTag:,或子类UITableViewCell,以便每个cell都有一个指向其自己的按钮的出口。 我可以毫无问题地在原型单元上创建连接吗?那么这仍然有效吗? 你可以使用按钮的标签来识别单元格。应该允许并且应该允许来自单元原型的出口。【参考方案2】:

SWIFT 2

我正在创建一个 popover segue,但我遇到了同样的错误。

我所做的是遵循@matt 的回答,不把它放在单元格上,现在他解释了这是合乎逻辑的!

相反,我将 TableView 作为锚点,效果很好。

希望对未来的人有所帮助。

【讨论】:

感谢添加,我在 swift 2 上遇到了这个问题,我不知道为什么 很高兴它有帮助! @darkndream @PaulBrewczynski 我刚刚在 Storyboard 中添加了一个 popover segue + TableView 作为锚点,如上所述。 请注意,您可以在 prepareforSegue 到实际单元格期间更改锚点以指向正确的单元格。 (在 performSegue 中将单元格作为发件人传递;然后 segue.destinationViewController.popoverPresentationController.sourceView = (UIView *) sender

以上是关于“无法编译连接:”错误是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

flash里的编译器错误是啥意思啊?

编译时错误“架构 x86_64 的未定义符号”是啥意思?

“_OBJC_CLASS_$_CATransaction,引用自:”编译时错误是啥意思?

“对等方重置连接”是啥意思?

UNKNOWN COMMAND是啥意思

“建立数据库连接时出错”是啥意思