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