2016-07-29 2 views
0

サーバーからすべてのデータを取得し、JSONを使用して解析しています。それぞれの話を聞いた後、私はMyStoryというクラスを作りました。私のアプリケーションはiPhone/iPadでは実行されていませんが、シミュレータ上でうまく動作しています

class MyStory: NSObject 
{ 
    var location = "" 
    var storyId = 0 
    var title = "" 
    var story = "" 
    var AllImages = [Image]() 

    var images = NSArray() { 
     willSet(newValue){ 

      // print("newvalue \(newValue)") 

      for obj in newValue { 
       let img = Image(dictionary: obj as! [String : AnyObject]) 
       AllImages.append(img) 

       //imagePaths.append(img.imagePath) 
       let helper = HelperClass() 

       var imageDetail = "http://www.sleeksolutions.net/saad/" + img.imagePath 
       helper.imagepath.append(imageDetail) 



       //print("counter: \(helper.imagepath.count)") 

      } 
     } 
    } 

    init(dictionary: [String:AnyObject]) { 
     super.init() 
     self.setValuesForKeysWithDictionary(dictionary) 
    } 

    override func setValue(value: AnyObject?, forKey key: String) { 
     if key == "images" 
     { 
      // print("key = \(key) , value : \(value)") 
     } 
     //error occurs here. 
     super.setValue(value, forKey: key) 
    } 

} 

そして、この関数はクラスSeeStoriesによって呼び出されます。ここでは、コードは次のようになります。

let session = NSURLSession.sharedSession() 
let request = NSMutableURLRequest(URL: url!) 
request.timeoutInterval = 10 
request.HTTPMethod = "GET" 

let task = session.dataTaskWithRequest(request) 
{ 
    (dat, res, er) in 

    if er == nil 
    { 
     do 
     { 
      print("m hereeee") 
      self.serverStatus = true 

      let jsonObject = try NSJSONSerialization.JSONObjectWithData(dat!, options: .MutableContainers) 
      let arr = jsonObject as! NSDictionary 

      //print(jsonObject) 

      let storiees = arr["stories"] as! NSArray 

      for obj in storiees{ 
       //Calling to MyStory Class here 
       let s = MyStory(dictionary: obj as! [String : AnyObject]) 
       self.stories.append(s) 

       let stat = self.fetch(s) 

       if stat == false 
       { 
        self.saveInCoreData(s) 
       } 
      } 
     } 
    } 
} 

Here is the picture of error in terminal

+0

は、ブレークポイント例外 – Shubhank

+0

は私にsetValuesForKeysWithDictionary'方法 – zylenv

+0

'内のコードを表示してくださいを追加するには、任意の外部ライブラリを使用していますか? –

答えて

0

あなたは(あなたがMyStoryオブジェクトを作成するために使用する)になっている辞書を確認してください。見た目からはstoryIdStringとして返され、longに保存しようとしています。 storyIdは、私が間違っている可能性が代わりに

class MyStory: NSObject 
{ 
    var location = "" 
    var storyId = "" //THIS instead of = 0 
    var title = "" 
    var story = ""... 

String変数として設定する必要がありますが、これは、あなたの質問に示すエラーログからの私の最高の推測です。

+0

これは役に立ちましたが役に立たなかった。ストーリーアイディアでエラーが発生しているのは間違いありません。私は例外ブレークポイントを追加します。しかし、私はこれを解決することができません。私のアプリはシミュレータ上で正常に動作しています。 –

+0

辞書のどのようなものが表示されますか?それは手がかりを与えるかもしれない – lostInTransit

+0

あなたのヘルプStoryIdエラーが解決されましたが、imagePathに別のエラーがあります。 クラスイメージ:NSObjectの{ VARパス= "http://www.sleeksolutions.net/saad/" するvar IMAGEIDます。int = 0 するvar IMAGEPATH:文字列= "" するvar imageURLに:文字列{ 戻りセルフ。経路+ IMAGEPATH } INIT(辞書:[文字列:ANYOBJECT]){ でsuper.init() //ここでは、エラー self.setValuesForKeysWithDictionary(辞書) }} –

0

考えられる理由は、あなたは、String型の変数を使用していて、それがクラッシュにつながるいくつかの長い値が含まれています。

クラッシュの原因となっているコードの正確な行を特定するために例外ブレークポイントを設定し、修正することができます。

enter image description here

enter image description here

+0

例外ブレークポイントを追加しました。 : TravelStories [16832:647878] - [__NSCFString longValue]:認識できないセレクタがinstanに送信されました0x14659d60 –

+0

storyIdにエラーが発生しています –

0

答えが見つかりました。私の辞書は私に文字列の値を渡し、私はInt値を保存していました。ですから、initメソッドで私はこのようにしました:

imgid = dictionary ["imageId"]! imageId =文字列(文字列としてのimgid)!

それは働いていた...おかげですべて:)

関連する問題