Tag: 核心数据

为什么tablePath的第一部分的indexPath是以

我有一个tableView,它分为2个部分。 func numberOfSections(in tableView: UITableView) -> Int { return 2 } 每个部分都有它自己的FetchResultController(FRC)。 这是我的CellForRoatAt函数 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "personCell", for: indexPath) as! PersonTableViewCell switch(indexPath.section) { case 0: print("this is section 0") let person = positiveFetchedResultsController.object(at: indexPath) cell.personName.text = person.name //print("\(person.name!) is the name") //print("\(person.statement!.count) postive person […]

在上下文崩溃的情况下保存核心数据

我有一个方法创build一个单独的线程: // Create thread dispatch_queue_t uniqueQueue = dispatch_queue_create("Unique Email Queue", NULL); // Run block on another thread called downloadQueue dispatch_async(uniqueQueue, ^{ // Get the persistance store coordinator AppDelegate* appDelegate = [UIApplication sharedApplication].delegate; self.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator; // Setup the managed object context NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init]; [managedObjectContext setPersistentStoreCoordinator:self.persistentStoreCoordinator]; // Save to core data for […]

无法将数据从CoreData加载到tableview中

我正在学习如何使用CoreData。 我有一个添加button,这只是一个文本字段和保存button视图的tableView。 按下button时,文本字段中的string保存在CoreData数据库中: @IBOutlet weak var name: UITextField! @IBAction func onSave(sender: UIBarButtonItem) { saveItem(name.text!) self.dismissViewControllerAnimated(true, completion: nil) } private func saveItem(itemName: String) { let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let managedContext = appDelegate.managedObjectContext let entity = NSEntityDescription.entityForName("Item", inManagedObjectContext: managedContext) let item = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) item.setPrimitiveValue(itemName, forKey: "name") do { try managedContext.save() listItems.append(item) }catch […]

Core Data比较coredata对象与给定date的date

我有两个实体: AgendaEvents AgendaDates AgendaDates与AgendaEvents有多对多的关系。 我试图存储在一个临时数组(var myTempEvents = [AgendaEvent]())所有AgendaDates内部AgendaDatesdate(至less)等于一个定义的date(myDate) myDate是从日历(JTAppleCalendar)中select的date。 for date in calendar.selectedDates { myDate = date } 现在我需要获得议程date中至less有一个date等于myDate的所有AgendaEvent对象。 我需要时间不影响比较。 我有一个函数来使用这个: func agendaEventsWithDate(date: Date) -> NSFetchRequest<AgendaEvent> { // create a fetch request that will retrieve all the AgendaEvents. let fetchRequest = NSFetchRequest<AgendaEvent>(entityName: "AgendaEvent") // set the predicate to only keep AgendaEvents where the related AgendaDate's […]

NSPredicate在swift 3迁移后崩溃

在迁移到swift3之后,我有一个无法修复的问题 let fetchRequest: NSFetchRequest<User> = User.fetchRequest() fetchRequest.predicate = NSPredicate(format: "id == %@", id) 我的应用程序在第二行崩溃,访问不良,没有理由。 types是正确的,没有日志,没有什么,只是不好的访问。 有什么build议么? 发现原因,谓词错误,导致id是Int64types,不知道这个版本的swift需要什么样的谓词

核心数据迁移:无法将types“NSManagedObject_MyType”的值转换为“MyModule.MyType”

我正在做一个“中等重量”的核心数据迁移。 我正在使用映射模型从一个传统存储/数据模型迁移到不同的存储和不同的模型(即完全不同的.xcdatamodeld )文件,并在适用的情况下使用自定义的NSEntityMigrationPolicy对象。 以前我有各种与对象图无关的对象,现在我想拥有一个主对象Library ,使我能够轻松地清除所有关联的数据(使用级联删除规则)。 由于NSEntityMigrationPolicy子类中的自定义方法,我在迁移过程中遇到了问题: class LegacyToModernPolicy: NSEntityMigrationPolicy { func libraryForManager(_ manager: NSMigrationManager) -> Library { let fetchRequest: NSFetchRequest<Library> = NSFetchRequest(entityName: Library.entity().name!) fetchRequest.predicate = nil fetchRequest.sortDescriptors = [NSSortDescriptor(key: "filename", ascending: true)] fetchRequest.fetchLimit = 1 do { // will fail here if NSFetchRequest<Library> let results = try manager.destinationContext.fetch(fetchRequest) log.info("results: \(results)") if results.count == 1 { […]

NSManagedObject错误

我现在开始学习iOS的核心数据。 我目前得到致命的错误:意外地发现零,同时展开下面的代码行上的可选值 。 我一直在YouTube和其他地方听过讲座,也看了一下他们的代码,但是却不知道这个错误背后的原因。 如果有人能给我一个概述,这将是非常有帮助的。 目前在我的代码中,我只是从实体分配值,没有提取。 应用程序代表: lazy var applicationDocumentsDirectory: NSURL = { // The directory the application uses to store the Core Data store file. This code uses a directory named "com.alakh.singh.okejhbs" in the application's documents Application Support directory. let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) return urls[urls.count-1] }() lazy var managedObjectModel: NSManagedObjectModel = { […]

用where子句从coredata中删除logging

我有一个实体(UserDetails),它有两列(用户名,密码)。 例如: 从这我填充不同的值,并显示在一个表视图。 NSEntityDescription *entity = [NSEntityDescription entityForName:@"UserDetails" inManagedObjectContext:managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:entity]; [request setResultType:NSDictionaryResultType]; [request setReturnsDistinctResults:YES]; [request setPropertiesToFetch:@[@"username",@"password"]]; //not sure if this will generate the same output as what I'm thinking of. self.users = [[managedObjectContext executeFetchRequest:request error:nil] mutableCopy]; [self.tableView reloadData]; 预期输出(来自上面的代码): (ABC,DEF) (ABC,XYZ) (ABC123,def123) (S01,S01) 现在我想添加一个删除function到表格视图,它应该从表格和核心数据logging中删除。 由于它们不是以与coredata模型相同的顺序填充的,所以我想使用类似于where子句的东西来删除它。 所以每当我删除(abc,def)它应该删除coredata中的所有相似的logging。 有人可以帮助如何解决这个问题? TIA

核心数据:以编程方式更改删除规则

我的iOS应用程序从第三方数据库下载logging,并使用CoreData在本地存储它们。 用户能够编辑存储的logging的某些方面,例如,除了来自数据库的笔记外,还可以添加用户笔记。 有时候,数据库得到更新,我提供了一个刷新function。 而不是检查条目的哪些部分是不同的,我只是蛮力删除旧的,并用一个新的replace。 但是,这也会删除用户注释。 我尝试在刷新之前保存它们,并在插入新条目后重新添加它们,但是一旦原始条目被删除,由于“级联”删除规则,用户注释也被删除。 如果我将删除规则设置为“无操作”,则所有的笔记都不会被删除。 所以我在想,是不是可以在更新的时候临时更改用户备注的删除规则,这样就不会被旧的条目删除呢? 或者,也许我的方法是完全错误的,有更好的方法来处理呢? 更新:我在这里创build了一个后续问题: NSManagedObject的关系更改为不同的上下文

如何在右侧队列上初始化ManagedObjectContext?

非常需要一个build议,目前用完了想法。 我堆栈与核心数据并发相关的问题,debugging我使用 – “com.apple.CoreData.ConcurrencyDebug”和我有: 堆栈: 线程3队列:coredata(serial) 0 + [NSManagedObjectContext Multithreading_Violation_AllThatIsLeftToUsIsHonor ]:CoreData`- [NSManagedObjectContext executeFetchRequest:error:]: 1 – [NSManagedObjectContext executeFetchRequest:error:]: 2 NSManagedObjectContext.fetch(__ObjC.NSFetchRequest)抛出 – > Swift.Array: 3(AppRelegate。)(fetchRequest NSFetchRequest) – > [A])。(closure#1) 我从这里进入AppDelegate :: fetchRequest: let messageRequest: NSFetchRequest<ZMessage> = ZMessage.fetchRequest(); messageRequest.sortDescriptors = [NSSortDescriptor(key: "id", ascending: false)]; let messageArray: Array<ZMessage> = self.fetchRequest(messageRequest); 我在串行队列(self.queueContainer)上执行所有coredata的东西。 public func fetchRequest<T>(_ request: NSFetchRequest<T>) -> Array<T> { […]