Tag: nsmanaged对象

SWIFT CoreData NSManagedObject

我有一个自定义NSManagedObject(在Swift中),看起来像这样 import UIKit import CoreData @objc(Item) class Item: NSManagedObject { @NSManaged var title:String func entityName() -> String{ println("Entity Name") let item = "Item" return item } func insertItemWithTitle (title: String? , managedObjectContext:NSManagedObjectContext) -> Item{ println(title) let item = NSEntityDescription.insertNewObjectForEntityForName(entityName(), inManagedObjectContext: managedObjectContext) as Item if title { item.title = title! } return item } } 什么是正确的方式来初始化这样的东西,并使用它

问题加载子实体mangedobject在coredata

我认为这是错误的,它只加载一个汽车部分:这种方法需要两个arrays之一与汽车的名字,一个零件,创build一个新的汽车,并添加汽车零件,然后将汽车保存到核心数据。 (目前不这样工作) for (int i=0; i<[massiveArray count]; i++) { //create a new car and part Car*newCar =(Car*)[NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:[self managedObjectContext]]; CarPart *part =[NSEntityDescription insertNewObjectForEntityForName:@"CarPart" inManagedObjectContext:[self managedObjectContext]]; //set car title to string title in array of titles [newCar setValue:[massiveArray objectAtIndex:i] forKey:@"name"]; //go through car parts array and add all new parts for that specific car for […]

核心数据,我怎样才能有效地find和删除pipe理的对象

我的应用程序发送一个获取请求到一个date(上次更新的date)的服务器来更新其内容(核心数据中的2个实体,没有关系,所有的属性是string)…大多数时候它只接收新的内容,但有时它也会收到需要更新的旧内容,而不是仅仅插入。 1表是非常简单直接我只是从数组中更新项目的id(从服务器的ID不是forms的核心数据),我做了这些项目的提取,然后删除它们。 之后,我插入更新的项目,因为他们是新的。 这是我如何删除它们: -(void)deleteOfEntity:(NSString*)entityName theItemsWithIds:(NSArray*)ids{ NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext: [self managedObjectContext]]; [fetchRequest setEntity:entity]; [fetchRequest setIncludesPropertyValues:NO]; [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"(id IN %@)", ids]]; NSError *error; NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error]; if(fetchedObjects && [fetchedObjects count]>0){ for (NSManagedObject* toDelete in fetchedObjects) { [[self managedObjectContext] deleteObject:toDelete]; } } } […]

保存更新的Core Data实例

在我的iOS应用程序,我有一个表视图显示来自核心数据实体的实例。 select一行后,应用程序会从实例属性值中打开一个视图详细信息,如果需要,用户可以更改它们。 从表视图控制器我使用didSelectRowAtIndexPath方法传递一个NSManagedObject : – (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { EditToDoViewController *detailViewController = [[EditToDoViewController alloc] initWithNibName:@"EditToDoViewController" bundle:nil]; NSManagedObject *selectedObject = [[self fetchedResultsController] objectAtIndexPath:indexPath]; detailViewController.selectedObject = selectedObject; //[self.navigationController pushViewController:detailViewController animated:YES]; [self presentViewController:detailViewController animated:YES completion:nil]; } 然后,在EditToDoViewController ,我使用文本字段显示实例值,如下所示: ToDoTextField.text = [[selectedObject valueForKey:@"thingName"]description]; 但我不知道现在如何实现一个保存方法来存储更新的ToDoTextField.text在AddToDoViewController实现文件中,我正在使用保存button操作方法内的下面的代码,但我想要插入一个新的对象,我想要更新它。 AppDelegate* appDelegate = [AppDelegate sharedAppDelegate]; NSManagedObjectContext* context = appDelegate.managedObjectContext; NSManagedObject *favoriteThing = [NSEntityDescription insertNewObjectForEntityForName:@"FavoriteThing" […]

NSManagedObject的描述显示值,但访问它们显示NaN?

我在这里发现了一个在迁移模型时创build关系的优秀解决scheme 。 我在模型中遇到了一个奇怪的问题。 -(BOOL)createRelationshipsForDestinationInstance:(NSManagedObject *)dInstance entityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError *__autoreleasing *)error { NSError *superError = nil; BOOL ismappingSuccess = [super createRelationshipsForDestinationInstance:dInstance entityMapping:mapping manager:manager error:&superError]; if (ismappingSuccess && [dInstance.entity.name isEqualToString:@"FTEvent"]){ FTEvent *event = (FTEvent*)dInstance; NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:event.date_time]; … 这里有一个奇怪的问题event.date_time我期待一个值,但在debugging器它显示的值(NsTimeInterval) NaN而不是实际值。 但是,当我打印事件的描述,我可以清楚地看到提供的date值。 当我做event.date_time时,这怎么可能显示NaN ? Printing description of event: <NSManagedObject: 0xbbb9b80> (entity: FTEvent; id: 0xbbbab90 […]

如何检查一个关系是否已经build立 – 核心数据

在将数据添加到核心数据时,如何检查是否build立了关系? 目前,我的两个实体之间有很多关系。 我正在尝试创build一个细节视图,但我正在挣扎,我不知道,如果它是由于没有build立关系,或者如果我的问题是将数据传递到新的视图控制器。 我正在使用下面的代码将数据添加到核心数据实体。 在build立两者之间的关系时,这看起来是否正确? ExcerciseInfo *info = [_fetchedResultsController objectAtIndexPath:indexPath]; NSManagedObject *routineEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Routines"inManagedObjectContext:context]; NSManagedObject *routineEntityDetail = [NSEntityDescription insertNewObjectForEntityForName:@"RoutinesDetails" inManagedObjectContext:context]; [[routineEntityDetail valueForKey:@"name"] addObject:routineEntity]; [routineEntity setValue: info.name forKey:@"routinename"]; [routineEntityDetail setValue: info.details.muscle forKey:@"image"]; NSError *error = nil; 错误调查 我使用了一个build议的方法,但是当我testingNSLog(@"ExTitle *** %@",Ex.routinedet);的关系时NSLog(@"ExTitle *** %@",Ex.routinedet);我仍然得到这个错误NSLog(@"ExTitle *** %@",Ex.routinedet); routinedet是@property @property (nonatomic, retain) NSSet *routinedet; nonatomic @property (nonatomic, retain) NSSet […]

如何做NSManagedObject的完美KVO?

这里完美的KVO包括两部分:正确添加观察者,正确移除观察者。 故事: 我使用一个UITableViewCell(单元格)显示一个NSManagedObject(对象)。 每个对象都有一些dynamic属性,需要通过其单元观察。 并非所有对象都具有相同的观察属性组。 我有select地添加关键path观察者: if(object.thumbnail_pic_url)[object addObserver:cell forKeyPath:@“thumbnail_picture”options:0 context:NULL]; 对象可以被删除。 当删除对象时,我必须删除观察者。 该数据库是非常大和复杂的,所以我绝对不希望注册所有单元格接收moc通知,如NSManagedObjectContextObjectsDidChangeNotification。 但是,如果必须的话,我可以接受在对象中添加一个细胞伊娃,即使它再次是好的模式 – 视图 – 控制器devise模式。 问题:如何删除对象的所有注册键path的观察者(单元格)时删除? 事实上,这是一个大问题,可以分为两个小问题: 哪里是最好的地方把观察员删除代码? 我如何确定注销哪些关键path? 删除对象后,我无法查询它的属性 – 这将导致无法填充的错误,所以我不能这样写代码: if(object.thumbnail_pic_url)[object removeObserver:cell forKeyPath:@“thumbnail_picture”]; 而且我也不能盲目移除未注册关键path的观察者 – exception(不能移除关键path“thumbnail_picture”的观察者,因为它没有注册为观察者)将被抛出。

核心数据 – 遍历NSManagedObject的属性

我是核心数据的noob,所以在这里。 我有一个核心数据对象,例如学生。 学生有鬃毛属性,如姓名,年龄,dob,地址等。 现在我需要显示所有这些属性到一个表格视图。 有没有简单的方法来遍历对象的学生? 或者我必须将数据转换成某种types的字典? 如果我需要将其转换为字典,是否有任何支持? 或者我必须写我自己的function。 非常感谢您的帮助,Stephen

如何将NSManagedObject转换为NSDictionary

我试图将NSManagedObject转换为NSDictionary这是我试过: var keys:NSArray = order?.entity.attributesByName.keys var dict:NSDictionary = order?.dictionaryWithValuesForKeys(keys) 但是我得到错误: LazyForwardCollection<MapCollectionView<Dictionary<NSObject, AnyObject>, NSObject>>? is not convertible to NSArray. 我在这里做错了什么?