我是个新手,试着用Swift编码。这个网站是无价的,但现在我遇到了一个问题,我一直未能找到解决办法。
我正在处理视频元数据,当我试图在Swift中使用AVFoundation和AppKit时,我遇到了一个奇怪的问题。我已在斯威夫特游乐场将问题隔离如下:
此代码工作正常,成功地将“testitem”值分配给testitem:
import AVFoundation
var testitem = AVMutableMetadataItem()
testitem.identifier = AVMetadataIdentifieriTunesMetadataSongName
testitem.value = "My title"只需添加“导入AppKit”语句就会导致错误:
import AVFoundation
import AppKit
var testitem = AVMutableMetadataItem()
testitem.identifier = AVMetadataIdentifieriTunesMetadataSongName
testitem.value = "My title"错误:“无法在' testitem‘中指定' value’。似乎不能再识别testitem的value属性。
这里发生什么事情?AppKit和AVFoundation之间有什么不兼容吗?顺便说一句,如果我用导入AppKit替换导入AVKit,我也会遇到同样的错误。
发布于 2015-01-20 03:30:25
看来,一旦您导入AppKit或AVKit,value就会被value()函数从NSDictionaryControllerKeyValuePair (这是导入的一部分)包含在编译器的脑海中。
通过调用setValue(),您可以轻松地解决问题。
testitem.setValue("My title")请注意,您必须将value视为一个函数才能得到它,例如,println(testitem.value())。
可以想象,在Objective中,这不是一个问题,因为在Objective中设置value属性与调用setValue:是一样的。但是Swift编译器的工作方式并不完全相同。在Swift中,您可以看到getter/setter函数或属性,但不能同时看到两者。我建议将此报告给Apple,作为API中的一个bug。
https://stackoverflow.com/questions/28037018
复制相似问题