- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试以编程方式制作一个应用程序,其中包含一个 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/
我是一名优秀的程序员,十分优秀!