AVAsset в 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-адрес: NSURL)


person HiDuEi    schedule 25.01.2016    source источник
comment
Можете ли вы описать или опубликовать ошибку?   -  person diatrevolo    schedule 26.01.2016


Ответы (1)


(Я бы отметил это как обман, потому что мы уже видели миллионы подобных вопросов, но в данный момент я не нахожу хорошо обобщенных кандидатов...)

В целом:

Когда вы видите интерфейс Swift, который выглядит так:

class Foo {
    init(thing: String)
}

Вы называете это так:

let myFoo = Foo(thing: "some text")

Это то, что компилятор называет синтаксисом "конструкции объекта".

(Конечно, замените Foo, thing, String и "some text" фактическими типами и экземплярами этих типов.)

См. Объекты и классы во вступительной главе "Быстрый обзор" книги Язык программирования Swift. Эта глава действительно является первой вещью, которую должен прочитать каждый, кто начинает работать со Swift.


Между прочим, это верно независимо от того, исходит ли инициализатор, который вы видите в вышеупомянутом интерфейсе Swift, изначально из Swift или импортируется из объявления Objective-C, как одно из следующих:

@interface Foo: NSObject

+ (Foo *)fooWithThing:(NSString *)thing;

- (instancetype)initWithThing:(NSString *)thing;

@end
person rickster    schedule 25.01.2016
comment
Rickster, THX!!, это просто стиль написания документации. - person HiDuEi; 26.01.2016
comment
боролся с «удобством init (URL url:NSURL)», что выглядит немного тавтологично, не так ли? - person HiDuEi; 26.01.2016