在 Core Data 中保存和检索自定义对象
Saving and retrieving custom objects in Core Data
这是我第一次尝试保存和检索自定义数据 to/from 我的核心数据,但我 运行 遇到错误提示:
fatal error: array cannot be bridged from Objective-C
当我尝试加载数据时。
我的代码如下所示,arrayOfNames 声明为 [String]
:
@IBAction func saveTap(sender: AnyObject) {
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let contxt: NSManagedObjectContext = appDel.managedObjectContext!
let en = NSEntityDescription.entityForName("Indexes", inManagedObjectContext: contxt)
let arrayData: NSData = NSKeyedArchiver.archivedDataWithRootObject(arrayOfNames)
let newIndex = Indexes(entity: en!, insertIntoManagedObjectContext: contxt)
newIndex.monday = arrayData
println(newIndex.monday)
contxt.save(nil)
}
@IBAction func loadTap(sender: AnyObject) {
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext!
let fetchReq = NSFetchRequest(entityName: "Indexes")
let en = NSEntityDescription.entityForName("Indexes", inManagedObjectContext: context)
var myList:[String] = context.executeFetchRequest(fetchReq, error: nil) as! [String]
println(myList)
}
我的模型文件如下所示:
@objc(Indexes)
class Indexes: NSManagedObject {
@NSManaged var monday: NSData
@NSManaged var tuesday: NSData
@NSManaged var wednesday: NSData
@NSManaged var thursday: NSData
@NSManaged var friday: NSData
}
我还在我的数据模型中将所有属性设置为 transformable
。正如我所说,这是我第一次这样做,如果解决方案很明显,我很抱歉。
如有任何建议,我们将不胜感激。
executeFetchRequest
returns [AnyObject]?
,而不是 [String]
,实际上数组中的对象应该是 Indexes
个实例,其中包含您的存档字符串数组。
因此,您需要更正要放入提取结果的数组类型。
这是我第一次尝试保存和检索自定义数据 to/from 我的核心数据,但我 运行 遇到错误提示:
fatal error: array cannot be bridged from Objective-C
当我尝试加载数据时。
我的代码如下所示,arrayOfNames 声明为 [String]
:
@IBAction func saveTap(sender: AnyObject) {
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let contxt: NSManagedObjectContext = appDel.managedObjectContext!
let en = NSEntityDescription.entityForName("Indexes", inManagedObjectContext: contxt)
let arrayData: NSData = NSKeyedArchiver.archivedDataWithRootObject(arrayOfNames)
let newIndex = Indexes(entity: en!, insertIntoManagedObjectContext: contxt)
newIndex.monday = arrayData
println(newIndex.monday)
contxt.save(nil)
}
@IBAction func loadTap(sender: AnyObject) {
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext!
let fetchReq = NSFetchRequest(entityName: "Indexes")
let en = NSEntityDescription.entityForName("Indexes", inManagedObjectContext: context)
var myList:[String] = context.executeFetchRequest(fetchReq, error: nil) as! [String]
println(myList)
}
我的模型文件如下所示:
@objc(Indexes)
class Indexes: NSManagedObject {
@NSManaged var monday: NSData
@NSManaged var tuesday: NSData
@NSManaged var wednesday: NSData
@NSManaged var thursday: NSData
@NSManaged var friday: NSData
}
我还在我的数据模型中将所有属性设置为 transformable
。正如我所说,这是我第一次这样做,如果解决方案很明显,我很抱歉。
如有任何建议,我们将不胜感激。
executeFetchRequest
returns [AnyObject]?
,而不是 [String]
,实际上数组中的对象应该是 Indexes
个实例,其中包含您的存档字符串数组。
因此,您需要更正要放入提取结果的数组类型。