【问题标题】:EXC_BREAKPOINT (code=EXC_i386_BPT, subcode=0x0)EXC_BREAKPOINT(代码=EXC_i386_BPT,子代码=0x0)
【发布时间】:2015-03-26 07:53:21
【问题描述】:

我在从 API 检索后尝试插入 CoreData。但是当我尝试它时,它显示为EXC_BREAKPOINT (code=EXC_i386_BPT, subcode=0x0)。在日志中,它只显示为(lldb)。我认为这与插座无关,因为我在写作期间除了默认插座外没有设置任何特殊插座。我也尝试解决其他一种解决方案,但没有一个对我有用。请帮忙解决一下。

截图

代码

override func viewDidLoad() {
           super.viewDidLoad()

           var appDel :AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
           var context:NSManagedObjectContext = appDel.managedObjectContext!

           let urlString = "https://public-api.wordpress.com/rest/v1/sites/mmotaku.net/posts/"
           let url = NSURL(string: urlString)

           let session = NSURLSession.sharedSession()

           let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
               if (error != nil) {
                   println(error)
               } else {
                   let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

                   let posts = jsonResult["posts"] as NSArray
                   var newBlogItem:NSManagedObjectContext

                   var items = [[String:String]()]
                   var item = [String:String]()


                   for var i = 0; i < posts.count; i++ {

                  newBlogItem = NSEntityDescription.insertNewObjectForEntityForName("BlogItem", inManagedObjectContext: context) as NSManagedObjectContext

                       var authorDict = posts[i]["author"] as NSDictionary
                       newBlogItem.setValue(authorDict["name"], forKey: "name")
                       newBlogItem.setValue(posts[i]["title"], forKey:"title")
                       newBlogItem.setValue(posts[i]["content"], forKey: "content")
                       newBlogItem.setValue(posts[i]["date"], forKey: "date")

                       context.save(nil)   
                       println("completed")

                   }
               }
           })

           task.resume()


           if let split = self.splitViewController {
               let controllers = split.viewControllers
               self.detailViewController = controllers[controllers.count-1].topViewController as? DetailViewController
           }
}

【问题讨论】:

    标签: ios swift core-data


    【解决方案1】:

    您正在尝试转换为错误的类型。插入的结果将是NSManagedObject(或您的NSManagedObject 的子类),而不是NSManagedObjectContext。因此,如果您的子类是 BlogItem,请按如下方式更改插入:

    newBlogItem = NSEntityDescription.insertNewObjectForEntityForName("BlogItem", inManagedObjectContext: context) as BlogItem
    

    如果您没有子类化,只需在行尾使用 NSManagedObject 代替 BlogItem

    【讨论】:

    • 它有效,我错误地将其转换为 NSManagedObjectContext 而不是 NSManagedObject
    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多