我有使用 Swift 编写的 iOS 应用程序,可与 Core Data 一起使用。不,我想获取 Core Data 中存在的最后一条记录并将其呈现在 Today Widget Extension 中。
- 我在我的项目中添加了新的小部件目标
- 在我的coredata.xcdatamodeld中,我还检查了扩展的目标成员资格
- 对于两个目标(应用程序和扩展程序),我添加并启用了专门创建的应用程序组group.myapp.sharingForTodayExtension
这是我来自 TodayViewController 的代码
import UIKit import NotificationCenter import CoreData class TodayViewController: UIViewController, NCWidgetProviding { var managedObjectContext : NSManagedObjectContext? override func viewDidLoad() { super.viewDidLoad() let container = PersistentContainer(name: "containerName") container.loadPersistentStores { (storeDesc, error) in if let error = error { print("Widget Core Data loading error.... \(error)") return } print("loaded fine") self.managedObjectContext = container.viewContext let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "appEntities") if let fetchResults = (try? self.managedObjectContext?.fetch(fetchRequest)) as? [myCoreDataObjectType] { print("records count = \(fetchResults.count)") }
这是 PersistentContainer 的特殊类
class PersistentContainer: NSPersistentContainer{
override class func defaultDirectoryURL() -> URL{
return FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.myapp.sharingForTodayExtension")!
}
override init(name: String, managedObjectModel model: NSManagedObjectModel) {
super.init(name: name, managedObjectModel: model)
}}
问题是它显示记录数 = 0