【问题标题】:Issues storing a NSArray in CoreData [Swift]在 CoreData [Swift] 中存储 NSArray 的问题
【发布时间】:2015-02-23 10:52:21
【问题描述】:

我正在尝试将数组: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) 有谁知道我做错了什么?是存储数据导致此问题发生还是我如何获取?任何帮助表示赞赏。

【问题讨论】:

  • 崩溃日志消息告诉您出了什么问题。它说什么
  • @matt 它在控制台中显示(lldb),在代码中它以绿色突出显示并显示Thread 1: EXC_BAD_INSTRUCTION (code=EXC_i386_INVOP, subcode=0x0) 这并没有告诉我发生了什么。

标签: ios xcode core-data swift


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多