在核心数据中存储NSArray的问题[Swift]

时间:2014-12-26 00:31:39

标签: ios xcode core-data swift

我尝试将数组var upKNOArray: [Int] = []保存到CoreData中的Transformable。 它使用此代码成功保存:

let appDel : AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context : NSManagedObjectContext = appDel.managedObjectContext!
let entity = NSEntityDescription.entityForName( "SavedData", inManagedObjectContext: context )
var newItem = data( entity: entity!, insertIntoManagedObjectContext: context )
var error : NSError?
newItem.upKNOs = upKNOArray
newItem.downKNOs = downKNOArray
if !context.save(&error) {
    NSLog("Unresolved error \(error), \(error!.userInfo)")
}

问题是当应用程序再次运行并尝试使用以下代码加载时获取CoreData:

func fetchCoreData(){
  var error : NSError?
  let appDel : AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
  let context : NSManagedObjectContext = appDel.managedObjectContext!
  let fetchRequest = NSFetchRequest(entityName:"SavedData")
  let fetchedResults = context.executeFetchRequest(fetchRequest, error: &error) as [data]?
  if let resultsArray = fetchedResults {
    if resultsArray.count > 0 {
    let newItem = resultsArray[0] as data
    clientID = newItem.userid
    upKNOArray = newItem.upKNOs // THIS IS WHERE THE CRASH HAPPENS
    downKNOArray = newItem.downKNOs as [Int]
    NSLog("Saved data is \(newItem.userid)")
    }
  }

我评论了在运行时接收错误的行。 错误是:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_i386_INVOP, subcode=0x0) 有谁知道我做错了什么?存储的数据是否会导致出现此问题,或者我是如何获取的?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我决定不将实际数组存储在CoreData中,而是将array.description存储在String中并创建了一个句柄,将String转换回数组。