2016-07-13 1 views
0

gifを共有できるアプリを作りたいと思います。問題は、このコードを使用するとアプリケーションがクラッシュし、何も共有しないということです。私は答えのためにスタックのオーバーフローを見ようとしましたが、何も見つかりませんでした。 コードの下に書きます。このコードで何が間違っていますか? ありがとう!すぐに1つのgifを共有する

@IBAction func shareAction(sender: AnyObject) { 
    let imageURL: NSURL = NSURL(string: "http://media.fyre.co/OM2K20rSJuMGATAFFXRK_6.gif")! 
    let imageData: NSData = NSData(contentsOfURL: imageURL)! 
    let objectsToShare: [AnyObject] = [imageData] 
    let activityVC: UIActivityViewController = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil) 
    self.presentViewController(activityVC, animated: true, completion: nil) 
} 

答えて

0

まず、あなたは絶対にこの方法でNSURL(string:)を使用しないでください:あなたは、メインスレッド上のネットワークからファイルをダウンロードしようとしています。したがって、メインスレッドを同期的にブロックしています。それは禁じられている。 NSURLSessionを使用して適切にダウンロードしてください。

第2に、コードに2つの説明マーク(!)が含まれています。それは「私を倒してください」という意味です。それがまさに何が起こるのであれば、あなたはほとんど不平を言うことはできません。クラッシュしたくない場合は、オプションを適切にアンラップしてください。

基本的にコード内のすべてが怠惰な方法で行われています。代わりに物事を正しく行う。

+1

また、_Info.plist_ファイルで手配していない限り、iOSではこのように「http:」を使用することはできません。 iOSにはデフォルトで 'https:'が必要です。 – matt

+0

ありがとうございます。私は正しく2番目の部分に従います。アプリはもはやクラッシュしない。問題はNSURLSessionを使用できないことです:imageURL:NSURLSession = NSURLSession(設定: "media.fyre.co/OM2K20rSJuMGATAFFXRK_6.gif") – MrApp

+0

これでNSURLSessionの使い方が変わりました。それを使用する方法を学ぶ。 – matt

関連する問題