Tag: 核心数据

NSManagedObject – 如何获取属性的types

我试图parsing一个JSONstring直接进入一个托pipe对象。 JSONstring包含所有string,但我的实体有Date对象。 如果这是我的JSONstring { "name":"John", "dob": "12/12/2008", etc… } 这是我的实体Person: name : NSString dob: Date etc… 我想通过循环Json字典的键来parsing该json,并将值设置为我实体的匹配键: Person *aPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext]; NSArray *keys = [jsonDict allKeys]; for (NSString *key in keys) { [aPerson setValue:[jsonDict valueForKey:key] forKey:key]; } 这只适用于所有我的实体的属性是NSStrings。 我怎样才能得到我的实体属性的types/类能够设置各种types? 例如。 如果key = @“dob”我怎么能得到aPerson.dob的types/类? 所以我的代码看起来像这样: Person *aPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext]; NSArray *keys = […]

xcodebuild:cdtool无法编译:DataModelCompile /path/to/coredatamodel.xcdatamodeld dyld:找不到符号:_OBJC_CLASS _ $ _ OS_object

我正在构build一个Mac桌面/cocoa应用程序来存档我的iOS项目,核心实现使用NSTask与xcodebuild命令,其次是raywenderlich的这个指南 。 根本原因是CoreData模型文件编译,我用这个应用程序来build立我的另一个项目,没有包含任何CoreData文件,没有问题。 比较有趣的是,我在terminal上尝试了相同的xcodebuild命令,它就成功了! 然后,我开始比较两个xcodebuild输出,发现一些差异, 在terminal, DataModelCompile /Users/hanwei/Library/Developer/Xcode/DerivedData/youYue3xMaster-cjatyqmgblwyoyccarejxlozikdi/Build/Intermediates/ArchiveIntermediates/youYue3xMaster/InstallationBuildProductsLocation/Applications/youYue3xMaster.app/ youYue3xMaster/LogicBook.xcdatamodeld cd /Users/hanwei/work/DragonSource/projects/ios_youyue3_xmaster/youYue3xMaster export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/opt/subversion/bin:/usr/local/bin:/opt/subversion/bin:/usr/local/bin:/opt/subversion/bin:/usr/local/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin" /Applications/Xcode.app/Contents/Developer/usr/bin/momc –sdkroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk –iphoneos-deployment-target 7.0 –module youYue3xMaster /Users/hanwei/work/DragonSource/projects/ios_youyue3_xmaster/youYue3xMaster/youYue3xMaster/LogicBook.xcdatamodeld /Users/hanwei/Library/Developer/Xcode/DerivedData/youYue3xMaster-cjatyqmgblwyoyccarejxlozikdi/Build/Intermediates/ArchiveIntermediates/youYue3xMaster/InstallationBuildProductsLocation/Applications/youYue3xMaster.app/ 在我的cocoa应用程序的日志 DataModelCompile /Users/hanwei/Library/Developer/Xcode/DerivedData/youYue3xMaster-cjatyqmgblwyoyccarejxlozikdi/Build/Intermediates/ArchiveIntermediates/youYue3xMaster/InstallationBuildProductsLocation/Applications/youYue3xMaster.app/ youYue3xMaster/MagazineModel.xcdatamodeld cd /Users/hanwei/work/DragonSource/projects/ios_youyue3_xmaster/youYue3xMaster export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/usr/bin/momc –sdkroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk –iphoneos-deployment-target 7.0 –module youYue3xMaster /Users/hanwei/work/DragonSource/projects/ios_youyue3_xmaster/youYue3xMaster/youYue3xMaster/MagazineModel.xcdatamodeld /Users/hanwei/Library/Developer/Xcode/DerivedData/youYue3xMaster-cjatyqmgblwyoyccarejxlozikdi/Build/Intermediates/ArchiveIntermediates/youYue3xMaster/InstallationBuildProductsLocation/Applications/youYue3xMaster.app/ dyld: Symbol not found: _OBJC_CLASS_$_OS_object Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk/usr/lib/system/libxpc.dylib Expected in: /usr/lib/system/introspection/libdispatch.dylib in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk/usr/lib/system/libxpc.dylib 2016-06-17 09:46:28.158 momc[76594:13533677] […]

将持久数据保存为CoreData的txt文件是否安全?

我的iOS应用程序使用CoreData,并且每次从CoreData设备相关的应用程序打开时,都需要使用默认值填充一些表。 所以我使用NSUserDefaults来检查它是否是第一次打开。 如果是第一次,我用我已经创build的值填充表格(在CoreData上),并且通过逐行读取和以某种方式分离来格式化来自txt文件的行。 而我的问题是,这是安全和最快的方式来使用txt文件进行此类操作?

当应用程序在后台模式下工作时,CoreData错误/exception

我正在做一个multithreading的CoreBluetooth应用程序,其中iPhone正在作为一个中央,扫描(基于UI交互)的外设,然后连接和处理,导致应用程序的CoreData模型的各种更改,用于存储用户可以访问的不同外设的状态(而不必在用户每次启动应用程序时连接到它们)。 用户基本上通过UI请求与外围设备的连接,然后UI发起asynchronous工作者线程,尝试在特定的时间范围内(例如几分钟)完成请求,否则向UI报告失败/超时。 一切工作正常,但我现在刚开始添加对后台执行的支持,因为用户很可能会启动asynchronous工作线程,开始扫描BLE外设,然后locking手机并放在口袋里,当外围设备到达时,期待事物发挥作用。 然而,蓝牙智能的东西,他们应该(外设发现,连接和处理),但我突然得到的CoreDataexception; CoreData: error: exception during newFetchedPKsForSourceID: I/O error for database at /var/mobile/Applications/8640B48D-8744-436A-A083-C39F63FBFB3F/Documents/Model.sqlite. SQLite error code:266, 'not an error' errno:1 with userInfo of { NSFilePath = "/var/mobile/Applications/8640B48D-8744-436A-A083-C39F63FBFB3F/Documents/Model.sqlite"; NSPOSIXErrorDomain = 1; NSSQLiteErrorDomain = 266; } CoreData: error: exception during newFetchedPKsForSourceID: authorization denied with userInfo of { NSFilePath = "/var/mobile/Applications/8640B48D-8744-436A-A083-C39F63FBFB3F/Documents/Model.sqlite"; NSSQLiteErrorDomain = 23; } CoreData: […]

在属性上进行核心数据迁移时,从NSDate转换为NSString不适当地显示string

对于长期的问题,我感到抱歉。 我不知道如何解释这个没有包含大量的代码和图像。 我正在更新我的应用程序,因为我发现与date有关的问题,我不得不将属性从NSDate更改为NSString 。 我正在使用核心数据为我的应用程序。 应用程序的模型是: 交易实体 date实体 年实体 Year实体有一个名为yearOfEvent的NSDatetypes的属性,并且更新到我的应用程序(已经在应用程序商店中),我将yearOfEvent更改为NSString 。 一些研究和对另一个问题的答案告诉我,我必须自己做这个迁移。 这主要是工作,但还没有完成。 我的应用程序是一个双选项卡UITabBarController其中两个选项卡都是UITableViewControllers 。 首先是时间顺序条目的“时间线”。 第二个标签应该只显示已经input的年份; 所以如果用户使用2014,2013和2012的条目,则可以在“date”选项卡的单元格中看到这些条目,并且在点击该单元格时,会向您显示当年的条目。 这就是我想在这里改变的。 该应用程序由用户填充一些信息添加到UITextFields并从UIDatePicker中获取保存到Core-Data ,然后使用NSFetchedResultsController更新表。 问题 现在,当我从App Store中运行带有数据的应用程序,然后使用自定义迁移迁移到新版本的应用程序时,时间轴没有问题,但dateTableViewController的单元格的标签显示空白年。 单元格的数量是正确的,但是年份是空白的。 我在这个问题中遵循了被接受的答案: 多个通行证的核心数据迁移的例子或说明? 与代码的第一位,但我不知道在哪里把第二部分(代码的最后一部分)。 所以在我的Model类中,我有: – (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)sInstance entityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error { // Create a new object for the model context NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:[mapping destinationEntityName] inManagedObjectContext:[manager […]

对于在主线程的appDelegate managedObjectContext中创build的对象,“核心数据无法完成错误”

我错误地在后台线程上创build了一组对象,它创build了一个新的managedObjectContext,其中保存了对象。 这导致了许多“核心数据无法完成的错误”在我的现场应用程序崩溃。 请注意 – 我不是试图删除这些对象 – 这是一个问题,他们的创build方式,当我尝试在主线程上的应用程序委托(主)上下文中再次保存它们。 令人困惑的是我看到这个错误的其他对象,不同types的对象。 它们可以与在后台线程中创build的对象相关,尽pipe它们本身并不是在后台线程中创build的。 我很困惑这是怎么发生的。 我怎么能得到“核心数据不能履行过错”错误的对象不是在后台线程中创build,但应用程序委托(主)上下文? 有没有什么办法可以回到我的用户的实时应用程序中修复这个错误? 让我参考我的另一个问题,通过这个问题,我发现了这个错误: “核心数据不能满足一个错误”,没有被删除的对象 我写了一个新的问题,因为我觉得这是一个不同的问题 – 尽pipe绝对是相关的。 以下是在后台线程中创build对象的代码: – (void)friendPickerViewControllerDidChooseFriends:(NSArray *)friends { __ENTERING_METHOD__ if (friends.count > 0) { [[FacebookHelper sharedManager] friendPickerController].navigationController.navigationBar.userInteractionEnabled = NO; [self startProgressIndicator]; [self performSelectorInBackground:@selector(importFriends:) withObject:friends]; } else { [self dismissModalImportViewControllerAnimated];//releases picker delegates, etc } } #pragma mark – #pragma mark Import Friend […]

数据未更新的NSFetchedResultsController

我正在制作一个从服务器获取产品列表的应用程序。 然后我将它们存储在Core Data数据库中,并使用GMGridView呈现它们,数据源是NSFetchedResultsController 。 当我更改服务器中的产品详细信息时,我希望我的iOS应用程序同步并进行必要的更改,以便实现NSFetchedResultsControllerDelegate方法。 我应该如何正确更新我的gridView? – (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath { switch(type) { case NSFetchedResultsChangeInsert: [_currentData insertObject:anObject atIndex:newIndexPath.row]; [_currentData removeObjectAtIndex:indexPath.row]; [_gmGridView insertObjectAtIndex:newIndexPath.row animated:YES]; [_gmGridView removeObjectAtIndex:indexPath.row animated:YES]; [_gmGridView reloadObjectAtIndex:newIndexPath.row animated:YES]; [_gmGridView reloadObjectAtIndex:indexPath.row animated:YES]; [_gmGridView reloadData]; //[self updatePageControl]; break; case NSFetchedResultsChangeDelete: [_currentData removeObjectAtIndex:indexPath.row]; [_gmGridView removeObjectAtIndex:indexPath.row animated:YES]; //[self updatePageControl]; [_gmGridView reloadInputViews]; [_gmGridView reloadData]; […]

无法在RestKit中映射NSManagedObject的对象数组

我有NSManagedObject子类的User类: @interface User : NSManagedObject @property (nonatomic, retain) NSString * about; @property (nonatomic, retain) NSString * contactAddress; @property (nonatomic, retain) NSString * contactEmail; @property (nonatomic, retain) NSString * hobbies; @property (nonatomic, retain) NSArray* jobExperience; @property (nonatomic, retain) NSString * name; @property (nonatomic, retain) NSString * surname; @end 正如你所看到的,这个对象具有JobExperience对象的NSArray属性。 JobExperience定义如下: @interface JobExperience : NSObject <NSCoding> @property […]

核心数据错误: – :无法识别的select器发送到实例

我有一个自定义的类MyClass基本上由几个NSMutableArrays组成,没有其他variables。 我有一个实体MyEntity具有MyClass的伊娃。 当我尝试保存实体时,我得到这个堆栈转储: 0 CoreFoundation 0x0118ebe9 __exceptionPreprocess + 185 1 libobjc.A.dylib 0x012e35c2 objc_exception_throw + 47 2 CoreFoundation 0x011906fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 3 CoreFoundation 0x01100366 ___forwarding___ + 966 4 CoreFoundation 0x010fff22 _CF_forwarding_prep_0 + 50 5 Foundation 0x00091bf6 _encodeObject + 1076 6 Foundation 0x0009d041 +[NSKeyedArchiver archivedDataWithRootObject:] + 206 7 CoreData 0x00eb7255 -[NSSQLiteConnection execute] + 2677 8 […]

iOS Core Data获取新插入的,尚未保存的对象

我必须在批处理(导入过程)中的CoreData实体中创build一些数据,我想在最后“提交”或“回滚”一个错误(因此保存之间将不起作用)。 问题是我例如需要创build一个实体“人”,并在以后的进展中,我需要重新使用该实体。 但它可以在这个过程之前已经存在,或者可以在这个导入过程中创build。 所以我试图用谓词“(personId == 4711)”来获取它。 但是,虽然我已经设置了[fetchRequest setIncludesPendingChanges:YES]; 它没有find新创build的Person对象。 我读到这个问题 , 这个答案是哪个状态,这是不可能的? 我对吗? 如果是这样,我该如何解决/处理这个?