【问题标题】:iOS9 - Saving a string to Core DataiOS9 - 将字符串保存到 Core Data
【发布时间】:2016-01-13 01:23:00
【问题描述】:

我知道这个问题已经被问过并回答了很多次,但无论我尝试了多少解决方案,我都无法让它发挥作用。

因此,我的应用程序将存储有关当前登录用户的用户信息。我想将其存储为 Core Data 中的简单用户对象。

我创建了一个名为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?

}

每当用户名应该被保存或从 Core Data 中获取时,都会调用两个函数

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!
}

这是我第一次尝试使用核心数据,似乎我遗漏了一些东西。谁能看到这里有什么问题?我不确定数据是否保存正确,fetchRequest 中的results 是一个空数组。

【问题讨论】:

  • 我刚刚使用了您的代码,它工作正常。你从哪里打电话给saveUsernamegetUsername

标签: ios core-data swift2 ios9


【解决方案1】:

希望this 会回答您的部分问题“我不确定数据是否正确保存”

Xcode 6.0.1 说明

  1. Xcode > 打开 > YourProject
  2. Xcode > 产品 > 运行
  3. Xcode > 窗口 > 设备
  4. (第 1 列 - 选择)设备 > YourDeviceName
  5. (第 2 列 - 选择)已安装的应用程序 > YourAppName
  6. (第 2 列 - 选择)“已安装应用程序”列表下的 Cog
  7. (弹出 - 选择)下载容器... 保存到位置
  8. 右键单击“YourAppName.xcappdata”
  9. 选择“显示包装内容”
  10. AppData > 文档 > YourDatabase

【讨论】:

  • @jruizaranguren 哦,感谢您的纠正。我没有意识到这是一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2013-02-01
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多