我正在尝试转换此代码

var request = NSFetchRequest(entityName: "ItemModel")
    var error: NSError?

    var results : NSArray = managedObjectContext!.executeFetchRequest(request, error: &error)!

    for res in results
    {
        println(res)
    }
    self.dismissViewControllerAnimated(true, completion: nil)

}


对于我在SWIFT2中的应用来说,却没有运气。这是我尝试进行转换。

do {

        let results = try self.context!.executeFetchRequest(fetchRequest) as! [ItemModel]

    } catch {
        fatalError("getItem error: /(fetchError.localizedDescription)")
    }

}


我试图用它来从我的名为Item Model的核心数据中获取数据,但是却很费劲。有人知道我在做什么错吗?我的新代码没有错误,但是没有运行。

先感谢您

最佳答案

尝试这个:

func fetchItems() -> [NSManagedObject]? {

    let managedContext = // your context here

    let fetchRequest = NSFetchRequest(entityName: "ItemModel")

    do {
        let results = try managedContext.executeFetchRequest(fetchRequest)
        return results as? [NSManagedObject]
    } catch let error as NSError {
        print("Could not fetch \(error), \(error.userInfo)")
    }
    return nil
}


然后根据函数的结果组装您的ItemObject数组。您的对象没有以ItemObject的形式存储在数据库中,而是被转换为NSManagedObject的,您必须在从数据库中获取它们后重新进行转换。

例如,假设您的ItemObject类如下所示:

class ItemObject {

    var name : String
    var someData : NSData
}


您将这样重新创建这些项目:

func convertObjects(objects: [NSManagedObject]) -> [ItemObject] {

    var itemObjects = [ItemObject]()

    for object in objects {

        let itemObject = ItemObject()

        itemObject.name = object.valueForKey("NAME_KEY") as? String ?? "DEFAULT_VALUE"
        itemObject.someData = object.valueForKey("DATA_KEY") as? NSData ?? NSData()

        itemObjects.append(itemObject)
    }
    return itemObjects
}

关于ios - 通话中出现其他错误? Swift 2 Core Data应用程序问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36364438/

10-09 08:30