Swift2 中的 AVAsset
AVAsset in Swift2
if let url = song.valueForProperty(MPMediaItemPropertyAssetURL) as? NSURL {
audioAsset = (AVAsset.assetWithURL(url))
Xcode7 使用 AVAsset 时出现一些错误。
错误说:
'assetWithURL' 不可用:使用对象构造 'AVAsset(URL:)'
一段时间后我找到了这个解决方案:
audioAsset = AVAsset(URL: url)
但我不知道这与此处针对 Swift2 编写的文档所说的内容有什么关系。您为什么不将此处的 NSURL 类型明确写入代码中?看起来有点乱。
便利初始化(URL url: NSURL)
(我将其标记为一个骗局,因为我们之前已经看到过无数这样的问题,但我目前找不到 well-generalized 候选人... )
总的来说:
当您看到如下所示的 Swift 界面时:
class Foo {
init(thing: String)
}
你这样称呼它:
let myFoo = Foo(thing: "some text")
这就是编译器所说的 "object construction" 语法。
(当然,将 Foo
、thing
、String
和 "some text"
适当地替换为实际类型和这些类型的实例。)
请参阅 Swift 编程语言 的开篇 "A Swift Tour" 章中的 Objects and Classes。本章确实是任何人入门时都应该阅读的第一本书 Swift。
顺便说一句,无论您在上述 Swift 接口中看到的初始化程序最初来自 Swift,还是从 Objective-C 声明中导入,都是如此以下之一:
@interface Foo: NSObject
+ (Foo *)fooWithThing:(NSString *)thing;
- (instancetype)initWithThing:(NSString *)thing;
@end
if let url = song.valueForProperty(MPMediaItemPropertyAssetURL) as? NSURL {
audioAsset = (AVAsset.assetWithURL(url))
Xcode7 使用 AVAsset 时出现一些错误。 错误说:
'assetWithURL' 不可用:使用对象构造 'AVAsset(URL:)'
一段时间后我找到了这个解决方案:
audioAsset = AVAsset(URL: url)
但我不知道这与此处针对 Swift2 编写的文档所说的内容有什么关系。您为什么不将此处的 NSURL 类型明确写入代码中?看起来有点乱。
便利初始化(URL url: NSURL)
(我将其标记为一个骗局,因为我们之前已经看到过无数这样的问题,但我目前找不到 well-generalized 候选人... )
总的来说:
当您看到如下所示的 Swift 界面时:
class Foo {
init(thing: String)
}
你这样称呼它:
let myFoo = Foo(thing: "some text")
这就是编译器所说的 "object construction" 语法。
(当然,将 Foo
、thing
、String
和 "some text"
适当地替换为实际类型和这些类型的实例。)
请参阅 Swift 编程语言 的开篇 "A Swift Tour" 章中的 Objects and Classes。本章确实是任何人入门时都应该阅读的第一本书 Swift。
顺便说一句,无论您在上述 Swift 接口中看到的初始化程序最初来自 Swift,还是从 Objective-C 声明中导入,都是如此以下之一:
@interface Foo: NSObject
+ (Foo *)fooWithThing:(NSString *)thing;
- (instancetype)initWithThing:(NSString *)thing;
@end