我的应用程序未在iPhone/iPad上运行,但在模拟器上运行良好

问题描述:

我从服务器获取所有数据并使用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

代码是否使用任何外部库? –

检查你得到(您可以使用它创建一个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(字典) } } –

可能的原因是您正在使用一个String类型的变量,它包含了一些长期价值这将导致崩溃。

您可以将异常断点标识为负责崩溃并修复它的确切代码行。

enter image description here

enter image description here

+0

我已经添加了异常断点,它给了我这样的东西: TravelStories [16832:647878] - [__NSCFString longValue]:无法识别的选择器发送到实例0x14659d60 –

+0

错误是在storyId –

我找到了答案。我的字典传递给我的字符串值,我保存在Int值。所以在init方法中,我确实喜欢这样:

imgid = dictionary [“imageId”]! imageId = String(imgid as!String)!

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