Tag: 核心数据

核心数据是否会限制string的长度?

我想知道在iOS中使用Core Data存储的string的长度是否有限制。 (设备上可用的RAM或磁盘空间除外)

在coreData xcode iphone中创build复合谓词

嗨,我正在与3个实体(class级,学生,考试logging)和他们的关系领域核心数据工作: Class<——>> Students <——> ExamRecord 我创build了一个谓词来获取第五课的学生名单。 NSString * fmt2 = @"studentsToClass.className=%@"; NSPredicate * p2 = [NSPredicate predicateWithFormat:fmt2,@"5th",nil]; 有了这个,我得到了第五class的所有学生 现在我也想对学生提交的另一个filter。 获取考试logging“结果”为“通过”的学生.result是ExamResult实体中学生的属性 我怎样才能在这个使用复合谓词? 如果我错了,请纠正我 任何帮助将不胜感激 谢谢

“无法加载NSManagedObjectModel。 nil是非法的URL参数“

我想从AppDelegate获取托pipe的对象上下文,但是在将两行代码放入方法之后,应用程序崩溃了,即使我什么也没做,并且在debugging区域中有一条消息: “CoreData:无法加载NSManagedObjectModel。一个非法的URL参数…“ 在我的方法中添加的代码: AppDelegate *delegate = [UIApplication sharedApplication].delegate; NSManagedObjectContext *managedObjectContext = delegate.managedObjectContext; AppDelegate中的-managedObjectModel方法: – (NSManagedObjectModel *)managedObjectModel { // The managed object model for the application. It is a fatal error for the application not to be able to find and load its model. if (_managedObjectModel != nil) { return _managedObjectModel; } NSURL *modelURL = [[NSBundle […]

如何使用魔法logging来创build和更新对象,并保存它们而不使用contextForCurrentThread

我刚刚阅读MagicalRecord的博客文章的作者为什么contextForCurrentThread不能在MagicalRecord工作 。 不推荐使用saveWithBlock应使用saveWithBlock因为它为相关线程创build了一个安全的新NSManagedObjectContext 。 我一直在我的应用程序广泛使用contextForCurrentThread到目前为止。 然而,我很难找出如何使用saveWithBlock而我的提取和保存不一定顺序发生。 目前我正在做的事情如: localContext = NSManagedObjectContext.MR_contextForCurrentThread person = Person.MR_createInContext(localContext) person.name = "John Smith" 用户然后可以浏览应用程序,不同的控制器,视图等。 其他对象可以使用与上述代码类似的方法来创build。 然后在将来的某个任意点,当用户决定保存时,我运行这个方法: localContext = NSManagedObjectContext.MR_contextForCurrentThread localContext.MR_saveToPersistentStoreWithCompletion( lambda { |success, error| # … } ) 推荐的方法是创build和更新对象,然后保存它们而不使用contextForCurrentThread ?

奇怪的父/子NSManagedObjectContext现象

我已经创build了两个这样的背景: // create writer MOC _privateWriterContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; [_privateWriterContext setPersistentStoreCoordinator:_persistentStoreCoordinator]; // create main thread MOC _managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; _managedObjectContext.parentContext = _privateWriterContext; 我有一个NSFetchResultedController用_managedObjectContext启动。 我知道这很奇怪,但我正在向父级添加一条logging到_privateWriterContext ,我正在saving它。 令人惊讶的是,儿童情况,所以FRC得到这个事件的通知。 为什么? 我没有reset孩子,或其他任何东西。 我以为他们是独立的实体,只要孩子的情况下不会得救。 在@pteofil文章中,我发现这一行: 当一个环境发生了变化,但没有得到保存时,它的所有后代都可以看到,但是不会看到它的祖先。 它被推送到持久性存储(通过持久性商店协调器),并且对连接到商店的所有上下文都可见。

核心数据,“按瞬态sorting”的解决方法

假设我有一个名为Event的核心数据实体,它表示周期性(年度)事件。 每个事件都有一个“date”属性。 我需要将此事件呈现给按“下一次发生date”sorting的用户。 这个属性当然取决于当前的date,因此应该被标记为暂时的 :将它存储在数据库中没有意义。 但是,如您所知,您无法通过核心数据中的瞬态属性来查询sorting。 是否有一个聪明的方法来保持这个属性暂时的,仍然有我的核心数据sorting? 我不想获取然后自己sorting,但是我也想避免在数据库中存储这个瞬态信息。

用Core Data存储自定义对象

我试图存储一个NSMutableArray组成的VOs(NameVO)与核心数据,但得到下面的exception抛出: 'NSInvalidArgumentException', reason: '-[NameVO encodeWithCoder:]: unrecognized selector sent to instance 0x1096400a0' 我的NameVO只是一个简单的值对象,扩展NSObject并包含两个字段,一个string和一个NSMutableArray本身包含string。 它还包含一个比较function。 我试图准备这个存储为一个CD可转换的属性types('名称'是我的NameVO数组): NSData *tempNamesData = [NSKeyedArchiver archivedDataWithRootObject:names]; 我的问题是:我需要做什么使NameVO被NSKeyedArchiver接受成功转换为NSData? 我不希望NameVO扩展NSManagedObject,因为那样我就不能直接实例化和初始化它。

核心数据保存无法识别的select器exception

这是一个很长的一段时间,因为谷歌search返回一无所获。 有时,往往足够的地方值得进一步调查,但往往不够我可以追踪什么时候或如何发生,我得到以下exception,当我调用save:在NSManagedObjectContext : -[_NSObjectID_48_0 _stateFlags]: unrecognized selector sent to instance 0x8675570 上下文是types为NSPrivateQueueConcurrencyType的子上下文,它是NSPrivateQueueConcurrencyTypetypes的主上下文的子NSMainQueueConcurrencyType 。 除了堆栈跟踪之外,我实在没有任何进一步的信息: 任何密码技术人员能否从堆栈跟踪中找出任何可能的想法来解决这个问题?

iOS TableView解散模态后重新加载

在我的应用程序中,我列出了tableview中的核心数据条目。 我想允许用户使用以模态方式呈现的详细视图作为表单视图来编辑logging。 编辑logging时,我正在观察特殊的行为。 stream程: 用户用logging加载tableview。 -加工 用户select一条logging进行编辑。 -加工 用户将视图控制器中的logging编辑为模态窗体视图。 -加工 用户保存编辑并解除表单视图。 -加工 表视图显示以前编辑的logging的正确更改。 -加工 用户重复步骤2 – 4select一个不同的logging进行编辑。 -加工 Tableview显示所有logging的正确数据。 不工作。 在步骤7,表格视图将第一个编辑logging的显示恢复到其原始状态。 后续的logging编辑会导致以前的所有编辑恢复到原始状态。 如果tableview被解散并重新加载,logging是正确的,显示所有的编辑。 我已经在tableview的ViewWillAppear方法中使用了[tableview reload],但是当模态表单视图控制器被解散时,似乎没有被触发。 在我的tableviewcontroller代码中: -(void)viewWillAppear:(BOOL)animated { [self.tableView reloadData]; } 到处寻找,我还没有find解决办法,希望有人能指出我正确的方向。 谢谢!

在删除coredata中的对象后,按照通知重新加载tableview显示奇怪的结果

我是新来的这个coredata。 只是为了熟悉关系,我创build了两个实体CategoryList(由属性'categories'组成)和ExpenseList(由属性'rangespent'组成),它们具有多种关系。 从'CategoryList'到'ExpenseList'的关系是'expenseselist'。 第一个tableview显示每个类别的总费用 food -150 transportation -100 mobile -100 shopping -500 而第二个tableview显示的是个人开支 food -100 food -50 transportation -100 mobile -50 mobile -50 shopping -200 shopping -100 shopping -200 我已经写了代码,从我的第二个tableview中删除一个单独的费用行使用对象ID,因为它的线程安全。 当我从我的第二个表格视图删除食物条目说 food -50 当我回到第一个tableview时,它应该更新食物和显示 food -100 我已经注册了第一个默认通知中心的tableview,第一个表视图发送通知(通过nslog检查)每当一个对象被删除。 当第一个tableview接收到一个通知它重新加载tableview中的数据。 但是,当重新加载tableview显示的对象被从下一个tableview中删除的类别意想不到的价值。 这两个tableviews通过导航控制器连接。 这是我的第一个tableview的m.file。 #import "displayTable.h" #import "CategoryList.h" #import "ExpenseList.h" #import "IncomeList.h" #import "coreAppDelegate.h" @interface displayTable () @end […]