保存核心数据的问题

时间:2017-10-26 06:32:20

标签: ios swift core-data

我从api获得了一个名为productId的值。我想将此值存储在Core-Data中,以便我可以在另一个视图控制器中使用它。

所以,当我从api获得productID时,这就是我保存它的方式......

    ....else if result["success"] as! Int == 1 {
           print("SUCCESS!!")                         
           self.productId = (result["product_id"] as! NSString) as String
           self.saveId(givenName: self.productId) //Saving here...
}

saveId函数中,这就是我正在做的......

    func saveName(givenName:String) {

     //Saving to CoreData
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            return
        }
        let managedContext = appDelegate.persistentContainer.viewContext

        let entity = NSEntityDescription.entity(forEntityName: "Category", in: managedContext)

        let category = NSManagedObject(entity: entity!, insertInto: managedContext)

        category.setValue(givenName, forKey: "productId")

        do {

            try managedContext.save()
            self.mangObjArr.append(category as! Category)
            } catch let error as NSError {
            print("Could not save. \(error), \(error.userInfo)")
        }
     }

这不起作用,因为在viewWillAppear我获取数据时,我{0}获得了nil。这就是我在productId ...

中所做的
viewWillAppear

希望有人可以帮助...:)

1 个答案:

答案 0 :(得分:0)

您从实体类别的CoreData获取数据。 在检查productId之前检查类别对象是否为零。

如果你的category对象是nil,那么很明显productId是nil,这是因为你从CoreDB获取类别并且没有该实体的记录。

希望你明白。

在获取之前保存数据会返回一些记录。