天道酬勤,学无止境

core-data

Create a generic Swift function to return an array of Core Data entities

问题 警告:我对 Swift 和 Core Data 还是很陌生 我的代码中有几个函数返回特定实体类型的数组: func fetchStores() -> [Store]? { var stores: [Store]? let fetchRequest: NSFetchRequest<Store> = Store.fetchRequest() do { stores = try ad.persistentContainer.viewContext.fetch(fetchRequest) } catch { assert(false, error.localizedDescription) } return stores } 我想创建一个处理我所有实体的通用函数: func fetchEntities<T: NSManagedObject>(entity: T) -> [T]? { var results: [T]? if let fetchRequest: NSFetchRequest<T> = T.fetchRequest() as? NSFetchRequest<T> { do { results = try ad.persistentContainer.viewContext.fetch(fetchRequest) } catch { assert(false, error

2022-05-16 08:21:03    分类:技术分享    swift   generics   core-data

Changes when record was created in today extension and updated in app are not visible in today extension

问题 只是我有一个应用程序,今天扩展。 我还有两个实体: Goal和Service 。 @objc(Goal) class Goal: NSManagedObject { @NSManaged var identifier: String @NSManaged var startDate: Date @NSManaged var endDate: Date private var services: [Service] { let predicate = NSPredicate(format: "date >= %@ && date <= %@", startDate as NSDate, endDate as NSDate) return Service.mr_findAll(with: predicate) as! [Service] } var duration: Int64 { return services.reduce(0) { $0 + $1.duration } } } 当我在今天的扩展程序中创建与goal相关的service并在应用程序中更新它时,更新的结果在今天的扩展程序中不可见,而在应用程序中正确显示。 为什么? 这是我在扩展或扩展中创建和更新记录的方式: MagicalRecord.save({ context in Service

2022-05-15 19:40:04    分类:技术分享    ios   swift   core-data   magicalrecord

How to auto generate NSManagedObject subclasses with date attribute as Date instead of NSDate?

问题 我目前正在将我的项目更新到 Swift 3,并且我正在将我的所有 NSDate 方法和扩展移动到 Date 以保持应用程序中的标准。 问题是我使用 Xcode 自动生成我的 NSManagedObject 子类,它生成日期属性为 NSDate 而不是 Date。 有没有办法用日期属性作为日期来生成它? 编辑 根据 Apple 开发人员文档: Core Data 原生支持多种属性类型,例如字符串、日期和整数(分别表示为 NSString、NSDate 和 NSNumber 的实例)。 所以我认为这是不可能的=/ 回答1 目前还不可能,因为 Core Data 仍然非常依赖于 Objective-C 类型,这是它展示的地方之一。 但是,您仍然可以将Date分配给NSDate属性: newEvent.timestamp = Date() as NSDate 这远非理想,但如果您有其他使用Date的代码,则不必让它使用NSDate 。 仅当直接使用托管对象时才使用as进行转换。

2022-05-15 14:46:03    分类:技术分享    ios   core-data   swift3   nsdate   nsmanagedobject

Fixing Crash :Critical failure: the LastResort font is unavailable

问题 我正在使用本教程使用 sqlite 插入 10000 个条目 在我的viewcontroller.m中使用此代码 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. [self AddTHousandsOfEntry]; } -(void)AddTHousandsOfEntry { for (int i=0; i<100500; i++) { NSString *regNo=[NSString stringWithFormat:@"%d",i]; NSString *name=[NSString stringWithFormat:@"name%d",i]; NSString *department=[NSString stringWithFormat:@"department%d",i]; NSString *year=[NSString stringWithFormat:@"year%d",i]; if (regNo.length>0 &&name.length>0 && department.length>0 &&year.length>0 ) { [[DBManager getSharedInstance

2022-05-15 10:31:08    分类:技术分享    ios   objective-c   xcode   sqlite   core-data

Core Data saves object even when validation fails

问题 我已经包含了处理所有保存功能的函数。 这是我的问题。 我正在获取 5 个输入值并将其保存为 CoreData 日志实体。 即使 Log 对象无法验证,当我退出表单并查看表视图时,它仍然被保存。 如何强制 Core Data 仅在对象经过验证后才保存? -(void) saveLog { NSManagedObjectContext *managedObjectContext = [(AppDelegate_Shared *)[[UIApplication sharedApplication] delegate] managedObjectContext]; FormPickerCell *bloodPressure = (FormPickerCell *) [self.formController fieldAsObject:@"bloodpressure"]; NSInteger systolic = [(PressureDataSource*)bloodPressure.pickerCellDelegate selectedSystolicPressureForFormPickerCell:bloodPressure]; NSInteger diastolic = [(PressureDataSource*)bloodPressure.pickerCellDelegate

2022-05-15 09:01:03    分类:技术分享    iphone   objective-c   core-data   ios

ios 10 NSfetchedResultController does not animate when deleting multiple rows

问题 嗨,我正在使用带有 CoreData 和 NSfetchedResultController 的应用程序。 删除多行时遇到一个奇怪的问题。 删除动画在 IOS 9 上工作正常,但在 IOS 10 上。现在有动画(无论选择什么动画,单元格都只会消失)。 这是我的 fetchedResultController (来自 Master-detail 模板) // MARK: - Fetched results controller var fetchedResultsController: NSFetchedResultsController<Event> { if _fetchedResultsController != nil { return _fetchedResultsController! } let fetchRequest: NSFetchRequest<Event> = Event.fetchRequest() // Set the batch size to a suitable number. fetchRequest.fetchBatchSize = 20 // Edit the sort key as appropriate. let sortDescriptor = NSSortDescriptor(key: "timestamp", ascending

2022-05-15 05:17:03    分类:技术分享    ios   core-data   nsfetchedresultscontroller

Core Data <Fault > after use one time

问题 我搜索了几个小时,但没有找到任何东西 我在核心数据中处于有线情况 获取对象的方法 func fetchAllCoreData() -> NSArray? { let moc = DataController().managedObjectContext let fetchReq = NSFetchRequest(entityName: "Theater") var array = [Theater]() fetchReq.returnsObjectsAsFaults = false do { let obj = try moc.executeFetchRequest(fetchReq) as! [Theater] for var details in obj { array.append(details) } } catch { print("Error in Fetching") return nil } return array } 其中DataController()来自 http://www.codebeaulieu.com/10/adding-core-data-using-swift-2 我从 fetch 得到的值是 po print(self.arrTheater) [(实体:剧院;ID:0x7bf67a00;数据:{地址=伊斯康;城市=艾哈迈达巴德;ID =

2022-05-13 18:17:03    分类:技术分享    ios   swift   core-data

fetchresultscontroller issue or managed object context?

问题 参考帖子: 核心数据 - 基本问题 我能够从这段代码中获取托管对象上下文。 它让我想到另一个问题。 我有 2 个视图控制器和 1 个 NSObject 用户查找 (VC) 用户查找设置(VC) FetchProcessor (NSObject) 按顺序,Userlookup vc 首先加载,并且有一个按钮来加载 Userlookupsettings VC + 一个文本框和 UiButton。 当应用程序加载并且我点击 SETTINGS uibutton 时,一切正常......但是,当我进行搜索(FetchProcessor)然后加载设置时,它给了我错误(请在下面检查) if (![[managedObject managedObjectContext] save:&error]) { NSLog(@"Unresolved error %@, %@, %@", error, [error userInfo],[error localizedDescription]); exit(-1); // Fail } 错误: 2010-09-11 03:10:47.148 SAPBasis[975:207] *** -[NSCFString objectID]: unrecognized selector sent to instance 0x3d5d830 2010-09-11 03

2022-05-13 16:55:04    分类:技术分享    iphone   core-data   nsfetchedresultscontroller   nsmanagedobjectcontext   nsfetchrequest

Coredata / SWIFT get records with relationship

问题 核心数据关系仍然存在问题。 例子 : 实体用户(idU,NameU = 属性) 实体设备(idD,NameD = 属性) 核心数据模型问题:当我创建一个链接到用户的新设备时,我遇到了 Nsset 问题。 我认为这与多对多关系有关 仍然无法正常工作更新: 代码 : @IBAction func addDeviceBoutonAction(sender: AnyObject) { print("Creation Device debut") var nbCharacteres = Int((newDeviceNameTextField.text?.characters.count)!) if currentUserName == "" { print("Erreur creation device / currentUserName = Vide --> Abort") } else if nbCharacteres == 0 { print("Erreur creation device / newDeviceNameTextField = Vide --> Abort") } else { // init du MOC let MOC = (UIApplication.sharedApplication().delegate as! AppDelegate)

2022-05-13 09:28:27    分类:技术分享    swift   core-data   relationship

countForFetchRequest in Swift 2.0

问题 我正在尝试在 Swift 2.0 的托管对象上下文中使用countForFetchRequest方法。 我注意到executeFetchRequest的错误处理已更改为新的do-try-catch语法: func executeFetchRequest(_ request: NSFetchRequest) throws -> [AnyObject] 但是countForFetchRequest方法仍然使用旧的错误指针: func countForFetchRequest(_ request: NSFetchRequest, error error: NSErrorPointer) -> Int ...而且我在弄清楚如何在 Swift 2.0 中使用它时遇到了一些麻烦。 如果我做与 Swift 2.0 之前相同的事情: let error: NSError? = nil let count = managedObjectContext.countForFetchRequest(fetchRequest, error: &error) 我收到错误说要删除& ,但是如果我删除它,我会收到另一个错误,说NSError无法转换为NSErrorPointer 。 任何有关如何使其工作的帮助将不胜感激。 回答1 您的代码几乎是正确的,但error必须是一个variable ,才能作为

2022-05-12 14:22:32    分类:技术分享    swift   core-data   swift2   nsfetchrequest