Tag: 核心数据

错误:在更改核心数据模型后重复架构armv7的符号

我有一个使用核心数据框架的应用程序。 我工作正常。 我只是改变了数据模型 – 添加一个属性到一个实体。 当我尝试构build它时,出现错误: duplicate symbol _OBJC_METACLASS_$_AccountFolder in: /Users/XXX/Library/Developer/Xcode/DerivedData/MyApp-bxsswgxdenxgjweotkkkckaoalat/Build/Intermediates/MyApp.build/Debug-iphoneos/MyApp.build/Objects-normal/armv7/AccountFolder-33D7EA63E98D6090.o ld: 4 duplicate symbols for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation) 我做了一些search,大多数人得到这个错误是从朦胧的.h到.m,或多次导入相同.h。 我检查了我的代码。 我没有那个 而Coredata框架仍然在那里。 有谁知道还有什么可以的原因? 谢谢。

核心数据deleteObject:不工作?

我使用下面的代码: +(void)deleteObject:(NSManagedObjectID*)oId { NSError *error; DFAppDelegate *temp = [DFAppDelegate new]; NSManagedObjectContext *context = [temp managedObjectContext]; NSManagedObject *obj = [context existingObjectWithID:oId error:&error]; [context deleteObject:obj]; } 但似乎并没有相应的工作。 当我在iOS模拟器上重新启动我的应用程序时,我可以再次在列表中看到对象。 我试图用给定的对象ID打印对象,它正在返回正确的对象,但仍不会永久删除对象形成我的核心数据模型。 我的实体没有一个与另一个实体有关系。 任何人都可以解释我有什么问题? 谢谢。 编辑:我检查了错误,但它没有显示错误。

在应用程序运行时replace核心数据sqlite文件,数据不会更新

我正在为我的应用程序开发备份/恢复系统,用户可以在其中下载核心数据存储(sqlite文件)的备份版本,并将当前使用的数据存储replace为下载的文件。 但是,一旦用户下载文件并replace当前的数据存储,则没有任何数据显示为已更新。 但是,当应用程序退出并重新启动,恢复的数据可用。 我如何强制我的应用程序重新加载核心数据存储的文件? 我尝试从我的UIViewController中访问应用程序委托来恢复数据,像这样,重build核心数据堆栈,并在导航堆栈中的所有视图控制器中传播: MyAppDelegate *app = [[UIApplication sharedApplication] delegate]; app.managedObjectContext = nil; app.persistentStoreCoordinator = nil; app.managedObjectModel = nil; managedObjectContext = [app managedObjectContext]; NSArray *controllers = [self.navigationController viewControllers]; UIViewController *c; for (int i = 0; i < [controllers count]; i++) { c = [controllers objectAtIndex:i]; [c setManagedObjectContext:managedObjectContext]; } 但是这不起作用,当我回到根视图控制器时,它只会引发以下错误: 'The NSManagedObject with ID:0x5d79060 <x-coredata://D8E73D64-C9BA-4CFA-9213-F8BD61749155/MyObject/p2> […]

如何简单地删除旧的核心数据并重build新的数据?

我试图将coreData迁移到新版本,我正在执行以下步骤: 如果您有一个应用程序已经提交到正在使用较早的模型版本的应用程序商店,添加一个新的模型版本(selectname.xcdatamodeld然后编辑器 – >添加模型版本)进行任何更改之前。 然后,从核心数据选项卡添加一个新文件,如映射模型select,源模型(提交的应用程序使用的模型版本)目标模型(您已经完成更改的模型版本) 资源 但我的数据主要是图像和应用程序崩溃,因为它需要大量的内存。 所以我想删除旧的数据模型及其数据,并在用户更新应用程序时创build空的新模型数据。 这个怎么做?

NSPredicate predicateWithFormat传入属性名称

简单的问题关于NSPredicate的。 我试图构build我的谓词与“传入”的值如下所示: NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"%@ == %@",key,[changesDict valueForKey:@"Id"] ]; 但是,我一直无法得到这个正常工作。 如果我插入实际值,我通过它虽然工作。 所以这个工作: NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"contactId == %@",[changesDict valueForKey:@"Id"] ]; (注意我插入了contactId而不是前面的例子,我传递了一个string的同名) 为了排除故障NSLogged两个谓词看着他们的描述,他们是不同的。 我会在下面给他们看。 这是工作的一个 2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] contactId == "5878" 这是不工作的 2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] "contactId" == "5878" 所以我可以看到,它插入一个string,我真的只想要的属性的名称,我稍后将在取回请求中使用。 但有没有办法通过传递值来完成这个任务?

核心数据整数使用哪种整数types

核心数据有int16,int32和int64。 当在NSNumber窗体中使用这些窗体时,我应该使用NSInteger还是int(以及它们各自的NSNumber方法numberWithInt,numberWithInteger)。 我一直使用INT为int16和NSInteger为int32,但我不知道这是否是正确的。 我只想澄清一下。

核心数据实体关系不会在启动之间保存

我正在编写一个应用程序,它有四个主要的实体,都通过关系链接。 有些是一对一的,有些是一对多的。 在初始加载时,三个实体从存储在本地的XML文件中加载它们的数据到一个应用程序,其中一个实体从网上下载一个XML并从中加载它的数据。 当应用程序加载时,它会执行检查,以查看每个文件的数据是否比当前的数据更新,如果是,则将使用相应文件中的数据replace该实体中的所有当前数据。 作为我的debugging过程中的一部分,我一直在强制删除所有数据。 当调用delete函数并在应用程序启动时加载所有数据时,应用程序将运行得非常漂亮,所有实体和关系的行为都与应用程序完全相同。 但是,当我删除对delete函数的调用,并执行检查并尝试从存储的数据运行时,所有关系似乎都消失了。 在debugging这个时候,我发现所有的实体都包含了所有的常规数据,他们只是没有关系。 我无法弄清楚为什么世界上的关系是保存在第一次加载,但不保留所有数据不重新导入。 我会想象一些代码将有助于任何人debugging,但是,我不知道我应该包括多less。 所以,我将开始只包括数据加载类中调用的一个方法。 如果还有什么可以帮助,请让我知道。 很感谢任何forms的帮助。 更新代码:2/25/11(根据build议 – 问题依然存在)更新代码:2/25/11 – 解决问题 – (NSArray *) loadFeatures { if ([self checkForUpdate:@"Features"]) { [self deleteAllObjects:@"Features"]; NSString *filePath = [self dataFilePath:FALSE withResourceName:@"Features"]; NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath]; NSError *error; GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error]; NSArray *featureElements = [doc.rootElement […]

魔法logging保存在后台

我正在使用魔法logging框架来保存用户设置。 现在,我第一次想把东西保存在后台线程中。 关于魔法logging的github页面是一个我不完全明白的例子: Person *person = …; [MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){ Person *localPerson = [person MR_inContext:localContext]; localPerson.firstName = @"John"; localPerson.lastName = @"Appleseed"; }]; 为什么需要第一行? 我不能完全创build块中的人? 谢谢!

cellForRowAtIndexPath不会在reloadRowsAtIndexPaths之后调用

正如苹果文件所说, 重新加载行会导致表视图询问其数据源为该行的新单元格。 我将UITableView与NSFetchedResultsController结合在一起: – (void)controllerWillChangeContent:(NSFetchedResultsController *)controller { if (self.tableView.isEditing) { [self.tableView setEditing:NO animated:YES]; } [self.tableView beginUpdates]; } – (void)controllerDidChangeContent:(NSFetchedResultsController *)controller { [self.tableView endUpdates]; [self updateTabItemBadge]; [self.noDataView setHidden:![self isNoData]]; WXINFO(@"controllerDidChangeContent"); } 在上述两个函数之间,我重新加载目标单元格: case NSFetchedResultsChangeUpdate: { if (indexPath) { [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; } 我在Line1563设置了一个断点来检查reloadRowsAtIndexPaths是否被调用,但是在这之后, – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath没有被调用。 所以,我的手机无法更新。 有人可以告诉我为什么? 谢谢。

UITableView不更新

我正在使用核心数据模型和UITableViewController表视图。 我的模型似乎工作得很好,但是当我添加一个实体到我的模型时,我的表格视图没有更新。 我相信我的模型正在工作的原因是因为当我添加一个实体在运行时没有在视图中显示,但是如果我切割任务然后启动它,突然之前创build的实体显示在表视图中。 这里是我的表视图控制器 – AudioTableViewController.h #import <UIKit/UIKit.h> #import "Bank.h" #import "Player.h" @class Player; @interface AudioTableViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> { Player *myMainMan; } -(void)addAudioEntityToArray:(AudioFile *)event; -(NSMutableArray *)recordingsArray; @end AudioTableViewController.m(实现文件) #import "AudioTableViewController.h" @implementation AudioTableViewController -(void)addAudioEntityToArray:(AudioFile *)event { NSIndexPath *indexPath; if(event.type) { [[MusikerViewController recordingsArray] addObject:event];//self? indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; }else { [[MusikerViewController downloadsArray] addObject:event]; indexPath […]