2015-10-14 51 views
0

我得到了下面的代码加载存储的数据:CoreData:加载整数出文件的

func loadLevel(){ 
    let appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate) 
    let context:NSManagedObjectContext = appDel.managedObjectContext 

    let request = NSFetchRequest(entityName: "Level") 
    request.returnsObjectsAsFaults = false 

    do{ 
     let results:NSInteger = try context.executeFetchRequest(request) 
     level = results 
    }catch{ 
     print("Error") 
    } 
} 

在我试图将数据存储在variabel结果我获得以下错误行:

Cannot convert value of type '[AnyObject]' to specified type 'NSInteger' (aka 'Int')

我知道我没有做错误处理正确的,因为它应该是。这是我名单上的“第二步”。希望你能帮我解决我的第一个问题。

回答

0

executeFetchRequest返回一个结果数组,因为提取可以并且通常返回多个结果。根据配置获取请求的方式,这些结果可以是不同的类型。所以返回类型是[AnyObject]

您试图将提取结果分配给单个NSInteger。你不能只分配一个AnyObject这样的数组。您的结果将为您的Level实例的零个或多个实例,其实例为NSManagedObject或您为实体配置的自定义子类的实例。

你应该做的是:

  1. 变化results[AnyObject]
  2. 来看看这阵找到Level
  3. 获取整数值的情况下为类型从哪个的Level属性包含整数你需要。
+0

谢谢。我明天会试试这个。这似乎很多工作... –

+0

这是问题的本质。你正在做一些设计可以返回多个结果的东西。如果你只需要存储/读取一个整数,那么'NSUserDefaults'会更简单和更合适。 –

+0

非常感谢。使用'NSUserDefaults'来存储数据是一种更简单的方法,它提供了足够的存储容量。 –