2014-12-26 2 views
1

Я пытаюсь сохранить массив: var upKNOArray: [Int] = [] до Transformable в CoreData. Он успешно сохраняет используя этот код:Проблемы с хранением NSArray в CoreData [Swift]

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) Кто-нибудь знает, что я делаю неправильно? Является ли это сохраненными данными, из-за которых возникает эта проблема, или это то, как я получаю? Любая помощь приветствуется.

+0

Сообщение журнала сбоев сообщает вам, что не так. Что это значит? – matt

+0

@matt он говорит '(lldb)' в консоли и в коде выделяется зеленым цветом, и он говорит 'Thread 1: EXC_BAD_INSTRUCTION (code = EXC_i386_INVOP, subcode = 0x0)' Это ничего мне не говорит о том, что происходит. – uhfocuz

ответ

1

Я решил вместо хранения фактического массива в CoreData, я сохранил array.description в String и создал дескриптор для преобразования String обратно в массив.

Смежные вопросы