繁体   English   中英

iOS9-将字符串保存到核心数据

[英]iOS9 - Saving a string to Core Data

我知道这个问题已经被问过很多次,但是无论我尝试多少解决方案,我都无法解决。

因此,我的应用程序将存储有关当前登录用户的用户信息。我想将其作为简单的User对象存储在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!
}

这是我第一次尝试使用核心数据,似乎丢失了一些东西。 谁能看到这里有什么问题吗? 我不确定数据是否正确保存,并且fetchRequestresults是否为空数组。

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

Xcode 6.0.1的说明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM