Я работал над проектом Swift в Xcode. Я изо всех сил пытался исправить все ошибки, но у меня все еще есть 2, из-за чего мой проект завис, как вы можете видеть в коде ниже: @Error1 и @Error2. Я надеюсь, что вы могли бы мне помочь! Заранее спасибо!
override func viewDidLoad() {
super.viewDidLoad()
//Getting the URL of the item
for item in self.extensionContext!.inputItems {
if let item = item as? NSExtensionItem {
for itemProvider in item.attachments! {
//Going through each item in each input item
if let itemProvider = itemProvider as? NSItemProvider {
if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeURL as String) {
//If the item contains a URL
itemProvider.loadItemForTypeIdentifier(kUTTypeURL as String, options: nil, completionHandler: {(content, error) -> Void in
dispatch_async(dispatch_get_main_queue()){
if let url = content as? URL /*@Error1*/ {
if url.absoluteString("youtube.com") || url.absoluteString.contains("youtu.be") { //@Error1.1
self.setTitleOfTextView("Video")
//Just in case the app isn't running in the background, write the URL to the shared NSUserDefaults
var existingItems = Constants.sharedDefaults.valueForKey(Constants.videosToAdd)// sharedDefaults.value(forKey: Constants.videosToAdd) as! [String]
existingItems.append(url.absoluteString) //@Errror1.2
//Constants.sharedDefaults.set(existingItems, forKey: Constants.videosToAdd)
//Constants.sharedDefaults.synchronize()
NSUserDefaults.standardUserDefaults().setInteger(yourScore, forKey: "highScore")
NSUserDefaults.standardUserDefaults().synchronize()
//Passing URL
self.wormhole.passMessageObject(url.absoluteString as NSCoding?, identifier: "youTubeUrl")
return
}
}
self.setTitleOfTextView("Invalid URL.")
}
})
}
}
}
}
}
}
@Error1: 'Использование необъявленного типа
URL
'.Обратите внимание, что
content
изif let url = **content** as? URL {...}
объявляется как:let content: NSSecureCoding?
.Обновление: если я изменю
URL
наNSURL
, я получу еще 2 ошибки:@Error1.1 (
if url.absoluteString("youtube.com") || url.absoluteString.contains("youtu.be") {...}
): Невозможно вызвать значение нефункционального типаString
.@Error1.2 (
existingItems.append(url.absoluteString)
): Значение типаAnyObject?
не имеет членаappend
.
func setTitleOfTextView(_ text: String) {
self.mainLabel.text = text
DispatchQueue.main.asyncAfter(deadline: dispatch_time_t() + Double(Int64(3 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)) /*@Error2*/ {
UIView.animate(withDuration: 0.25, animations: {
self.view.alpha = 0
}, completion: { completed in
self.extensionContext?.completeRequest(returningItems: nil) { completed in
self.dismiss(animated: true, completion: nil)
}
})
}
}
@Error2: 'Использование неразрешенного идентификатора
DispatchQueue
'.Обновление: если я изменяю
DispatchQueue.main.asyncAfter(deadline: dispatch_time_t() + Double(Int64(3 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)) {...}
наdispatch_after(dispatch_time_t(), Int64((3 * Double(NSEC_PER_SEC)) / Double(NSEC_PER_SEC)) ) {...}
, я все равно получаю сообщение об ошибке: Тип аргументаInt64
не соответствует ожидаемому типуdispatch_queue_t
(он жеOS_dispatch_queue
).