gpt4 book ai didi

iOS 和 Xcode : incompatible type error when setting delegate and datasource in a UITableView

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:26 24 4
gpt4 key购买 nike

我正在尝试以编程方式制作一个应用程序,其中包含一个 UITableView,该 UITableView 根据应用程序的文档目录中的文件生成项目列表。我已经能够将文件读入数组 _filepathsArray,但是当我尝试使用数组填充表格时编译崩溃并且 Xcode 抛出警告。Xcode 指出以下行的问题:

_tableView.delegate = self;
_tableView.dataSource = _filepathsArray;

这两者都会引发“语义问题”。第一次抛出

`Assigning to 'id<UITableViewDataSource>' from incompatible type 'NSArray *__strong'`,

当第二个抛出

`Assigning to 'id<UITableViewDelegate>' from incompatible type 'BrowserViewController *const __strong'`.

如果我删除这些行,应用程序将正确编译(但当然不会使用数据来填充表格),所以我认为问题与这些有关。

我是 Objective C 和 Xcode 的初学者,所以我不太清楚自己做错了什么。感谢您的帮助。

更新

我已将 _tableView.dataSource = _filepathsArray; 行更改为 _tableView.dataSource = self; 如下面的几个答案所述。现在,两行都抛出相同的错误:

`Assigning to 'id<UITableViewDelegate>' from incompatible type 'BrowserViewController *const __strong'`.

这个错误可能是 View Controller 配置方式的结果吗?在头文件中,定义为一个UIViewController

@interface BrowserViewController : UIViewController

然后我包含一个 UITableView 作为 subview 。

最佳答案

您应该声明一个 UITableViewDataSource,它是一个实现该协议(protocol)并向您的表提供数据的对象。

_tableView.dataSource = self;

来自 Apple 文档

dataSource
The object that acts as the data source of the receiving table view.
@property(nonatomic, assign) id<UITableViewDataSource> dataSource
Discussion
The data source must adopt the UITableViewDataSource protocol. The data source is not retained.

更新:请按照我在回答“您应该声明一个UITableViewDataSource”的第一行定义您的类:

@interface BrowserViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>

关于iOS 和 Xcode : incompatible type error when setting delegate and datasource in a UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20795298/

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