2015-10-14 3 views
0

Я знаю, что этот вопрос задан и ответил много раз, но независимо от того, сколько решений я стараюсь, я не могу заставить его работать.iOS9 - Сохранение строки для данных ядра

Итак, мое приложение будет хранить информацию о пользователе, который вошел в систему. Я хочу сохранить его как простой объект User в Core Data.

Я создал новый объект Called UserData со следующими атрибутами:

name 
username 
profilePicture 

Когда пользователь входит в систему, эти значения извлекаются из сервера и должны быть сохранены локально в Core Data.

Я вызвал NSManagedObject подклассы для моего лица, и в конечном итоге со следующими двумя классами

// UserData.swift 
// Created by xxx on 2015-10-14. 

import Foundation 
import CoreData 

class UserData: NSManagedObject { 

// Insert code here to add functionality to your managed object subclass 

} 

и

// UserData+CoreDataProperties.swift 
// Created by xxx on 2015-10-14. 

// Choose "Create NSManagedObject Subclass…" from the Core Data editor menu 
// to delete and recreate this implementation file for your updated model. 

import Foundation 
import CoreData 

extension UserData { 

    @NSManaged var profilePicture: NSData? 
    @NSManaged var username: String? 
    @NSManaged var name: String? 

} 

Есть две функции, которые вызываются всякий раз, когда имя пользователя должно быть сохранены или полученные из Ядра Данные

func saveUsername(username: String) { 

    let appDelegate = 
    UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 

    let entity = NSEntityDescription.entityForName("UserData", 
     inManagedObjectContext:managedContext) 

    let user = UserData(entity: entity!, 
     insertIntoManagedObjectContext: managedContext) 

    user.setValue(username, forKey: "name") 

    do { 
     try managedContext.save() 
    } catch let error as NSError { 
     print("Could not save \(error), \(error.userInfo)") 
    } 
} 

func getUsername() -> String{ 
    let appDelegate = 
    UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 

    let fetchRequest = NSFetchRequest(entityName: "UserData") 

    var users = [UserData]() 

    do { 
     let results = 
     try managedContext.executeFetchRequest(fetchRequest) 
     users = results as! [UserData] 
    } catch let error as NSError { 
     print("Could not fetch \(error), \(error.userInfo)") 
    } 
    return users[0].name! 
} 

Это моя первая попытка для использования основных данных, и кажется, что я чего-то не хватает. Может ли кто-нибудь увидеть, что здесь может быть неправильно? Я не уверен, сохранены ли данные правильно, а results из fetchRequest - пустой массив.

+0

Я просто использовал свой код и он работает отлично. Откуда вы вызываете 'saveUsername' и' getUsername'? – joern

ответ

0

Hopfully this ответит часть вашего вопроса: "Я не уверен, если данные сохранены правильно"

Инструкции по Xcode 6.0.1

  1. Xcode> Открыть> YourProject
  2. Xcode > Продукт> Run
  3. Xcode> Window> Устройства
  4. (колонка 1 - выберите) Устройства> YourDeviceName
  5. (колонка 2 - выберите) Установленные приложения> YourAppName
  6. (колонка 2 - выберите) Cog в разделе 'Установленные приложения' список
  7. (Pop-Up - выбрать) Скачать Container ... Сохранить местоположение
  8. Right нажмите на кнопку 'YourAppName.xcappdata'
  9. Выберите 'Показать содержимое пакета'
  10. AppData> Документы> YourDatabase
+0

@jruizaranguren oh, спасибо за исправление. Я не понимал, что это проблема. – Tr0yJ

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