2
我正在开发类似于简单聊天应用程序的应用程序,我需要使用核心数据来保存/获取基于特定用户的聊天。我现在已经成功地创建了一个模型来保存用户,现在我需要将他们链接到他们的聊天。 对于我创建实体的UserData和下面是我的快捷文件快速创建聊天应用程序的核心数据
的UserData + CoreDataProperties.swift
import Foundation
import CoreData
extension UserData {
@NSManaged var firstName: String?
@NSManaged var userStatus: String?
@NSManaged var userId: String?
@NSManaged var userStatus: String?
@NSManaged var lastName: String?
@NSManaged var profilePic: String?
}
UserData.swift
class UserData: NSManagedObject {
convenience init(WithDictionary dict:NSDictionary){
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let newEntity = NSEntityDescription.entityForName("UserData", inManagedObjectContext:managedContext)
// initializer on NSManagedObject class
self.init(entity: newEntity!, insertIntoManagedObjectContext: managedContext)
self.userId = (dict.valueForKey(ID) != nil) && !(dict.valueForKey(ID) is NSNull)
? dict.valueForKey(ID) as! String
: ""
//similary initializing other variables
//Saving to database
do {
try managedContext.save()
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
保存用户数据
我能使用此类成功保存用户列表。现在我创建了一个ChatData实体,下面是它的结构。
ChatData + CoreDataProperties.swift
import Foundation
import CoreData
extension ChatData {
@NSManaged var chatId: String?
@NSManaged var chatOwnerName: String?
@NSManaged var chatReadStatus: Boolean?
@NSManaged var chatText: String?
@NSManaged var chatTimestamp: String?
@NSManaged var chatType: String?
@NSManaged var imageData: String?
@NSManaged var imageUrl: String?
}
现在,每一个特定的用户,我应该能够创建对应于特定用户id多个ChatData对象。我对核心数据没有太多经验。我已经看过一些关于创建关系的示例,但我仍然不确定它是如何工作的。我需要建立一种关系吗?如果是的话,我该怎么做才能做到这一点?
尝试境界数据库:http://realm.io/?比核心数据更容易使用,无需设置任何核心数据样板代码。 – Zhang
是的,使用一种关系。 @张你还应该提到你的领域局限性来推荐它,尤其是在没有给出任何提示的情况下它如何可能有助于提问... – Wain
我不知道领域的限制,我不是专家,它为我做这份工作。我唯一知道的是它没有像CoreData那样的iCloud同步功能。我不想对我不擅长的事情给出误导性的限制:D另外,这是一个评论以及一个问题评论,而不是一个答案:D – Zhang