2016-07-29 120 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對象)的字典。從外觀上看,storyId作爲String返回,您嘗試將其保存到longstoryId應設置爲String變量,而不是

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

我可能是錯的,但是這是在你的問題中顯示的錯誤日誌我最好的猜測。

+0

我做到了這一點,但沒有用。你是對的storyId上發生錯誤我添加異常斷點。但我無法解決這個問題。我的應用在模擬器上工作正常。 –

+0

你介意向我們展示一個詞典的外觀嗎?這可能會提供一條線索 – lostInTransit

+0

隨着您的幫助StoryId錯誤得到解決,但它在imagePath上有另一個錯誤。 類Image:NSObject的{ VAR路徑= 「http://www.sleeksolutions.net/saad/」 VAR圖像標識:INT = 0 變種的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]:無法識別的選擇器發送到實例0x14659d60 –

+0

錯誤是在storyId –

0

我找到了答案。我的字典傳遞給我的字符串值,我保存在Int值。所以在init方法中,我確實喜歡這樣:

imgid = dictionary [「imageId」]! imageId = String(imgid as!String)!

它的工作...感謝所有:)

相關問題