首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >冲突AVFoundation与AppKit Swift

冲突AVFoundation与AppKit Swift
EN

Stack Overflow用户
提问于 2015-01-20 02:55:01
回答 1查看 661关注 0票数 1

我是个新手,试着用Swift编码。这个网站是无价的,但现在我遇到了一个问题,我一直未能找到解决办法。

我正在处理视频元数据,当我试图在Swift中使用AVFoundation和AppKit时,我遇到了一个奇怪的问题。我已在斯威夫特游乐场将问题隔离如下:

此代码工作正常,成功地将“testitem”值分配给testitem:

代码语言:javascript
复制
import AVFoundation

var testitem = AVMutableMetadataItem()

testitem.identifier = AVMetadataIdentifieriTunesMetadataSongName
testitem.value = "My title"

只需添加“导入AppKit”语句就会导致错误:

代码语言:javascript
复制
import AVFoundation
import AppKit

var testitem = AVMutableMetadataItem()

testitem.identifier = AVMetadataIdentifieriTunesMetadataSongName
testitem.value = "My title"

错误:“无法在' testitem‘中指定' value’。似乎不能再识别testitem的value属性。

这里发生什么事情?AppKit和AVFoundation之间有什么不兼容吗?顺便说一句,如果我用导入AppKit替换导入AVKit,我也会遇到同样的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-20 03:30:25

看来,一旦您导入AppKit或AVKit,value就会被value()函数从NSDictionaryControllerKeyValuePair (这是导入的一部分)包含在编译器的脑海中。

通过调用setValue(),您可以轻松地解决问题。

代码语言:javascript
复制
testitem.setValue("My title")

请注意,您必须将value视为一个函数才能得到它,例如,println(testitem.value())

可以想象,在Objective中,这不是一个问题,因为在Objective中设置value属性与调用setValue:是一样的。但是Swift编译器的工作方式并不完全相同。在Swift中,您可以看到getter/setter函数或属性,但不能同时看到两者。我建议将此报告给Apple,作为API中的一个bug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28037018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档