2016-04-05 12 views
0

アプリケーションをビルドするときに「シグナルによってセグメントが失敗しました:11」というエラーが発生しました。このエラーを発生させると思われるコードは、カスタムクラスのviewDidLoadメソッドに表示されます。このクラスのコード全体は以下のとおりです。コマンドがシグナルセグメンテーション違反で失敗しました11 SDKまたはFacebookグラフAPIで解析された原因を解析しました

import UIKit 
import Bolts 
import Parse 
import FBSDKLoginKit 
import FBSDKCoreKit 
import FBSDKShareKit 
import ParseFacebookUtilsV4 

class SignUpViewController: UIViewController { 

@IBAction func signUp(sender: AnyObject) { 
} 

@IBOutlet weak var userImage: UIImageView! 


@IBOutlet weak var interestedInWomen: UISwitch! 


override func viewDidLoad() { 
    super.viewDidLoad() 


    let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, gender"]) 
    graphRequest.startWithCompletionHandler({ 

     (connection, result, error) -> Void in 

     if error != nil { 
      print(error) 

     } else if let result = result { 

      PFUser.currentUser()?["gender"] = result["gender"]! 
      PFUser.currentUser()?["name"] = result["name"]! 
      PFUser.currentUser()?.saveInBackground() 


      var userId = result["id"] as String 

      var facebookProfilePictureUrl = "https://graph.facebook.com/" + userId + "picture?type=large" 

      if let fbipicUrl = NSURL(string: facebookProfilePictureUrl) { 

       if let data = NSData(contentsOfURL: fbipicUrl) { 

       self.userImage = UIImage(data: data) 

       } 

     } 

    } 
    }) 
} 

ここで見ることができ、エラー・ログからのいくつかの出力は、(複数の出力がありますが、この部分は、現時点では私に関連すると思われるものです):

1. While type-checking 'viewDidLoad' at /Users/oivind/Dropbox/søndagsåpent/ParseServerStarterProject/ParseStarterProject/SignUpViewController.swift:28:14 
    2. While type-checking expression at [/Users/oivind/Dropbox/søndagsåpent/ParseServerStarterProject/ParseStarterProject/SignUpViewController.swift:33:9 - line:62:10] RangeText="graphRequest.startWithCompletionHandler({ 

     (connection, result, error) -> Void in 

     if error != nil { 
      print(error) 

     } else if let result = result { 

      PFUser.currentUser()?["gender"] = result["gender"]! 
      PFUser.currentUser()?["name"] = result["name"]! 
      PFUser.currentUser()?.saveInBackground() 


      var userId = result["id"] as String 

      var facebookProfilePictureUrl = "https://graph.facebook.com/" + userId + "picture?type=large" 

      if let fbipicUrl = NSURL(string: facebookProfilePictureUrl) { 

       if let data = NSData(contentsOfURL: fbipicUrl) { 

       self.userImage = UIImage(data: data) 

       } 

     } 

    } 
    })" 
    3. While type-checking declaration 0x7ffb2a8175b8 at /Users/oivind/Dropbox/søndagsåpent/ParseServerStarterProject/ParseStarterProject/SignUpViewController.swift:47:17 
    4. While type-checking expression at [/Users/oivind/Dropbox/søndagsåpent/ParseServerStarterProject/ParseStarterProject/SignUpViewController.swift:47:30 - line:47:46] RangeText="result["id"] as S" 
    5. While type-checking expression at [/Users/oivind/Dropbox/søndagsåpent/ParseServerStarterProject/ParseStarterProject/SignUpViewController.swift:47:30 - line:47:41] RangeText="result["id"]" 

を、私は、最新のリリースを使用していますXcode 7.3(ベータ版はありません)

私がこれまでに発見したことは、私は、コードのこの部分をコメントアウトした場合、アプリは完全に罰金構築することです。

var userId = result["id"] as String 
      var facebookProfilePictureUrl = "https://graph.facebook.com/" + userId + "picture?type=large" 
      if let fbipicUrl = NSURL(string: facebookProfilePictureUrl) { 
       if let data = NSData(contentsOfURL: fbipicUrl) { 
       self.userImage = UIImage(data: data) 
       } 
     } 

をしかし、私は私の人生のために実際に発生しているかを把握することはできませんこのエラー。

これは私の最初の質問ですので、しばらく検索していますが、正しい方向に私を導いてくれる同様のスレッドが見つかりましたが、そこの回答は私の問題を解決するのにはあまり役に立ちませんでした。いくつかの関連する提案を持っているように見える他のスレッドは、ここで見つけることができます:ビルドエラーが表示された後

Command failed due to signal: Segmentation fault: 11

不思議なことに、Xcodeでエラーがその色を強調構文は、コードのクラッシュの部分を強調してどこにも登場しましたこの特定の迅速なファイルを編集するたびに60秒ごとに実行されます。これは単なるランダムな出来事かもしれませんが、何らかの形で関連性があるかもしれません(おそらくこのコードのいくつかの部分は、ビルドされないだけでなく、Xcode:Pの部分もクラッシュします)

+0

派生データを削除してみてください。プロジェクトが不思議に構築されないときに役立つことがあります。 XCodeでWindow - > Projectに進み、プロジェクトを見つけて派生データを削除します。また、製品→クリーンを行い、それが機能するかどうかを確認することもできます。 – xlogic

+0

これはうまくいきませんでしたが、チップのおかげで!私は他の不思議なバグのためにそれを念頭に置いておきます。 – lundzern

+0

さて、私はエラーをゼロにしています。私は配列からIDを取得しようとするのではなく、自分のfacebook IDでuserId変数を "ハードコード"するとすべてが機能することがわかりました。 – lundzern

答えて

1

それで、数時間のトラブルシューティングの後、私はそれを引き起こした行までエラーを分離することができました。

var userId = result["id"] as String 

問題は、私は解決策がかろうじてこのように見えるように、その行を変更することでした私のためになるよう、結果の配列の内容をアンラップ強制しなければならなかったということでした。

let userId = result["id"]! as! String 

コンパイラがクラッシュした理由はわかりません。私はもっ​​と説明的なエラーメッセージを望んでいたでしょう(あるいは、Xcodeのエラーログをまだ読んでいないかもしれません)。

いずれにしても、バグが途切れてしまい、アプリが私の望むようにコンパイルされるため、私は満足しています。

関連する問題