使用 setDataSource 升级到 Xcode 4.6 后出现编译器错误

     2023-02-26     266

关键词:

【中文标题】使用 setDataSource 升级到 Xcode 4.6 后出现编译器错误【英文标题】:Compiler error after upgrading to Xcode 4.6 using setDataSource 【发布时间】:2013-08-20 16:28:36 【问题描述】:

我正在升级一些项目以使用 Xcode 4.6 和 Clang LLVM 编译器,但我遇到了一个错误。我不是最大的 obj-c 极客,所以我有点卡在这里。我认为这个question 触及了我的问题的基础,但并没有给我一个解决方案。

我的类派生自 NSTableView (@interface MyClass : NSTableView) 但当我进行以下调用时:

[self setDataSource:self];

我收到以下错误:

Cannot initialize a parameter of type 'id<NSTableViewDataSource>' with an lvalue of type 'MyClass *'

使用 Xcode 3.2.6 并没有遇到此调用的问题,但现在我很难理解为什么会出现错误。我确实在此调用之前添加了一些表列并设置了一些属性,但基本上我从上面的调用中得到了错误。

感谢任何帮助。

【问题讨论】:

你的类似乎没有实现数据源协议。 【参考方案1】:

首先,您的表格视图应该是它自己的数据源。这打破了 Cocoa 使用的MVC model。视图应该只关心显示/呈现数据,它不应该存储数据(这是模型的工作),也不应该是视图与模型接口的类(这是控制器的工作)。

通常,数据源将是符合NSTableViewDataSource 和协议的NSViewController

@interface MyViewController : NSTableViewController <NSTableViewDataSource, NSTableViewDelegate>

【讨论】:

是否可以在不添加新类和接口的情况下做到这一点? 至少,您必须实现NSTableViewDataSource 协议。不过,我非常建议重构您的架构。它目前已损坏,使您的代码的可重用性降低,并且难以调试和单独测试。与其让它溃烂,不如现在就把它扼杀在萌芽状态。 感谢您的 cmets! :)

android中setdatasource()方法

Android中,MediaPlayer类有个加载歌曲文件的方法setDataSource(),里面需要传递的参数是歌曲的路径。比如在sdcard里有个mp3文件叫a.mp3,加载该文件就是setDataSource("/sdcard/a.mp3");这样就能正常运行,但是如果我定义一个String变量pa... 查看详情

MediaPlayer.setDataSource(String) 不适用于本地文件

】MediaPlayer.setDataSource(String)不适用于本地文件【英文标题】:MediaPlayer.setDataSource(String)notworkingwithlocalfiles【发布时间】:2016-01-1005:52:15【问题描述】:如果我使用静态方法MediaPlayer.create(context,id),我可以播放本地mp3,但如果我使... 查看详情

水晶报表 - objRpt.SetDataSource()

】水晶报表-objRpt.SetDataSource()【英文标题】:CrystalReports-objRpt.SetDataSource()【发布时间】:2014-06-0513:55:59【问题描述】:我在我的表单上创建了一个名为Inv1的新CrystalReport和一个CrystalReportViewer1对象,这使用了一个强定义的数据集... 查看详情

获取 mediaMetadataRetriever.setDataSource 抛出非法参数异常

】获取mediaMetadataRetriever.setDataSource抛出非法参数异常【英文标题】:GettingmediaMetadataRetriever.setDataSourcethrowsillegalargumentexception【发布时间】:2014-12-1911:37:44【问题描述】:我正在开发一个使用mediaMetadataRetriever.setDataSource抓取视频... 查看详情

mediaplayer使用以及常见问题(代码片段)

...video);存储在SD卡或其他文件路径下的媒体文件。mediaPlayer.setDataSource(“/sdcard/video.mp4”);网络上的流媒体文件。mediaPlayer.setDataSource("http://www.citynorth.cn/music/video.mp4");MediaPlayer的setDataSource一共四个方法:setDataSource(Stringpath)s... 查看详情

深入androidmediaplayer的使用方法详解

...diaPlayermp=MediaPlayer.create(this,R.raw.test);//这时就不用调用setDataSource了2)如何设置要播放的文件:MediaPlayer要播放的文件主要包括3个来源:a.用户在应用中事先自带的resource资源例如:MediaPlayer.create(this,R.raw.test);b.存储在... 查看详情

安卓mediaplayer怎么实现一个文件的重新播放

...MediaPlayermp=MediaPlayer.create(this,R.raw.test);//这时就不用调用setDataSource了2.如何设置要播放的文件:MediaPlayer要播放的文件主要包括3个来源:a.用户在应用中事先自带的resource资源例如:MediaPlayer.create(this,R.raw.test);b.存储在SD卡或其他文... 查看详情

android的mediaplayer.create方法怎么用

...MediaPlayermp=MediaPlayer.create(this,R.raw.test);//这时就不用调用setDataSource了2.如何设置要播放的文件:MediaPlayer要播放的文件主要包括3个来源:a.用户在应用中事先自带的resource资源例如:MediaPlayer.create(this,R.raw.test);b.存储在SD卡或其他文... 查看详情

Android Mediaplayer:下载媒体文件的 setDataSource 问题

】AndroidMediaplayer:下载媒体文件的setDataSource问题【英文标题】:AndroidMediaplayer:setDataSourceissuefordownloadedmediafile【发布时间】:2011-02-1709:36:06【问题描述】:我有一个可以录制和播放音频文件的应用程序。一些音频文件是使用httpcl... 查看详情

Android:MediaPlayer.setDataSource(FileDescriptor fd) vs MediaPlayer.setDataSource(FileDescriptor fd,

】Android:MediaPlayer.setDataSource(FileDescriptorfd)vsMediaPlayer.setDataSource(FileDescriptorfd,longoffset,longlength)【英文标题】:Android:MediaPlayer.setDataSource(FileDescriptorfd)vsMediaPlayer.setDataSource(FileDescriptorf 查看详情

调用 setDataSource(FileDescriptor) 方法时出现异常(失败。:status=0x80000000)

】调用setDataSource(FileDescriptor)方法时出现异常(失败。:status=0x80000000)【英文标题】:ExceptionwhencallingsetDataSource(FileDescriptor)method(failed.:status=0x80000000)【发布时间】:2011-06-1506:30:38【问题描述】:我正在开发一个视频流应用程序... 查看详情

怎样在android中实现播放mp4资源文件?代码可行简洁的,不用按钮控制,我就是想做一闪屏

...MediaPlayermp=MediaPlayer.create(this,R.raw.test);//这时就不用调用setDataSource了如何设置要播放的文件:MediaPlayer要播放的文件主要包括3个来源:a.用户在应用中事先自带的resource资源例如:MediaPlayer.create(this,R.raw.test);b.存储在SD卡或其他文... 查看详情

Android MediaPlayer 无法 SetDataSource()

】AndroidMediaPlayer无法SetDataSource()【英文标题】:AndroidMediaPlayercan\'tSetDataSource()【发布时间】:2014-02-0518:13:58【问题描述】:我正在尝试为媒体播放器设置数据源,但它一直抛出此异常。java.io.IOException:setDataSourceFD失败我哪里错了... 查看详情

MediaMetaDataRetriever.setDataSource 返回 null

】MediaMetaDataRetriever.setDataSource返回null【英文标题】:MediaMetaDataRetriever.setDataSourcereturnnull【发布时间】:2018-04-2416:49:00【问题描述】:我正在尝试开发一个应用程序(RadioStream)应用程序,我想获取该MediaMetadataRetrieverAPI在收音机上... 查看详情

mediaMetadataRetriever.setDataSource(getBaseContext(),uri) 抛出非法参数异常

】mediaMetadataRetriever.setDataSource(getBaseContext(),uri)抛出非法参数异常【英文标题】:mediaMetadataRetriever.setDataSource(getBaseContext(),uri)throwsillegalargumentexception【发布时间】:2014-12-1907:57:27【问题描述】:开发人员您好,我有一段可以抓取... 查看详情

MediaPlayer setDataSource 失败,状态 = 0x80000000 为 2.3.4 上的文件路径设置的铃声

】MediaPlayersetDataSource失败,状态=0x80000000为2.3.4上的文件路径设置的铃声【英文标题】:MediaPlayersetDataSourcefailedwithstatus=0x80000000forRingtonesetbyfilepathon2.3.4【发布时间】:2013-04-3000:29:19【问题描述】:标题说明了大部分内容。我的应... 查看详情

java示例代码_在MediaPlayer setDataSource中包含http头

java示例代码_在MediaPlayer setDataSource中包含http头 查看详情

MediaPlayer.setDataSource 导致有效文件的 IOException

】MediaPlayer.setDataSource导致有效文件的IOException【英文标题】:MediaPlayer.setDataSourcecausesIOExceptionforvalidfile【发布时间】:2012-03-2806:35:36【问题描述】:这段代码曾经有效。然后,也许我在某处改变了一些东西(或者如果我对Android... 查看详情