Tag: 核心数据

如何将iPhone Core Data与Web服务器同步,然后推送到其他设备?

我一直在研究一种方法来同步多个设备(如iPad或Mac)之间存储在iPhone应用程序中的核心数据。 在iOS上使用Core Data的同步框架并不多(如果有的话)。 不过,我一直在想下面这个概念: 对本地核心数据存储进行更改,并保存更改。 (a)如果设备处于联机状态,它会尝试将更改集发送到服务器,包括发送更改集的设备的设备标识。 (b)如果变更集没有到达服务器,或者设备不在线,应用程序会将变更集添加到队列中,以便在联机时发送。 坐在云中的服务器将接收到的特定变更集合与其主数据库合并。 在云服务器上合并更改集(或更改集队列)之后,服务器会使用某种轮询系统将所有这些更改集推送到在服务器上注册的其他设备。 (我以为使用苹果的Push服务,但显然根据评论,这不是一个可行的系统。) 有什么我想要考虑的幻想? 我看过REST框架,如ObjectiveResource , Core Resource和RestfulCoreData 。 当然,这些都是和Ruby on Rails一起工作的,我并没有把它绑在里面,但是这是一个开始的地方。 我对我的解决scheme的主要要求是: 任何改变都应该在后台发送,而不要暂停主线程。 它应该使用尽可能less的带宽。 我曾考虑过一些挑战: 确保服务器上连接了不同设备上不同数据存储的对象ID。 也就是说,我将拥有一个对象ID和设备ID的表格,这些表格通过对存储在数据库中的对象的引用进行绑定。 我将有一个logging(DatabaseId [此表唯一的],ObjectId [唯一的整个数据库中的项],Datafield1,Datafield2),ObjectId字段将引用另一个表,所有对象:(ObjectId,DeviceId,DeviceObjectId)。 然后,当设备推送一个更改集时,它将从本地数据存储中的核心数据对象传递设备Id和objectId。 然后,我的云服务器将检查AllObjects表中的objectId和设备Id,并在初始表中查找要更改的logging。 所有更改都应该有时间戳,以便可以合并。 该设备将不得不轮询服务器,而不用消耗太多的电池。 如果/从服务器接收到更改,本地设备也将需要更新内存中的任何内容。 还有什么我在这里失踪? 我应该考虑什么样的框架来实现这一点?

'+ entityForName:nil不是合法的NSManagedObjectContext参数 – 核心数据

我已经将所有相关代码添加到App Delegate中,并且可以将其添加到数据模型中,并从applicationDidFinishLaunchingWithOptions中的数据模型中获取。 我的问题是当我试图写入我的视图控制器中的数据模型。 我已经将这个代码添加到头文件中: NSFetchedResultsController *fetchedResultsController; NSManagedObjectContext *managedObjectContext; @property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController; @property (nonatomic, retain) NSManagedObjectContext *managedObjectContext; 而这个代码给我的实现文件: NSManagedObjectContext *context = [self managedObjectContext]; NSManagedObject *model = [NSEntityDescription insertNewObjectForEntityForName:@"Events" inManagedObjectContext:context]; [model setValue:@"Sample Event" forKey:@"eventName"]; NSError *error; if (![context save:&error]) { NSLog(@"Couldn't save: %@", [error localizedDescription]); } 但是,我得到以下错误: 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal […]

将选取的图像保存到CoreData

我能够从照片库中挑选并显示图像,但是我的目标是能够将所选图像或文件path保存到核心数据,以便在select保存的logging时也可以显示图像。 我有CoreData的工作,我能够显示来自CoreData的文本罚款,这只是图像抱着我。 @IBAction func addPic(sender: AnyObject) { pickerController.delegate = self pickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary // 2 self.presentViewController(pickerController, animated: true, completion: nil) // Displays image func imagePickerController(picker: UIImagePickerController!,didFinishPickingMediaWithInfo info: NSDictionary!){ image.image = info[UIImagePickerControllerOriginalImage] as? UIImage self.dismissViewControllerAnimated(true, completion: nil)

如何在核心数据中存储图像

我是iOS新手。 我一直在试图制作一个应用程序,将相机捕获的图像存储到CoreData 。 我现在知道如何存储像NSString s, NSDate和其他types的数据,但努力存储图像。 我已经阅读了很多文章,说你必须把它写入磁盘并写入一个文件,但我似乎无法理解它。 以下代码是我用来将其他数据存储到核心数据的代码。 – (IBAction)submitReportButton:(id)sender { UrbanRangerAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; managedObjectContext = [appDelegate managedObjectContext]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"PotholesDB" inManagedObjectContext:appDelegate.managedObjectContext]; NSManagedObject *newPothole = [[NSManagedObject alloc]initWithEntity:entity insertIntoManagedObjectContext:managedObjectContext]; [newPothole setValue:self.relevantBody.text forKey:@"relevantBody"]; [newPothole setValue:self.subjectReport.text forKey:@"subjectReport"]; [newPothole setValue:self.detailReport.text forKey:@"detailReport"]; // [newPothole setValue:self.imageView forKey:@"photo"]; NSDate *now = [NSDate date]; //NSLog(@"now : %@", now); […]

核心数据在iPhone的静态库中

我已经构build了大量使用Core Data框架的静态库。 我可以成功地在我的外部项目中使用库,但只有在主项目中包含.xcdatamodel文件。 这并不理想,因为图书馆的目的是尽可能隐藏实施细节。 在另外一个问题中 ,我被告知,我不能将资源与一个图书馆捆绑在一起(这对我来说是完全有意义的)。 那么是否有一种方法可以在不需要将模型包含在主项目中的情况下以编程方式让模型“被发现”?

我如何encryptioniPhone上的CoreData内容

我有一些信息想在iPhone应用程序上进行静态encryption。 我是iPhone新手,我对CoreData并不熟悉,也不太熟悉它。 我有数据作为JSON,但我可以很容易地把它放到一个SQLITE3数据库或任何其他后盾数据格式。 我会采取任何最简单的(a)encryption和(b)与iPhone视图层整合。 每次启动应用程序时,用户都需要input密码才能解密数据。 encryption的目的是在用户丢失电话时保持数据不被访问。 出于速度原因,我宁愿一次encryption和解密整个文件,而不是encryption数据库每一行中的每个单独的字段。 注意:这与问题929744 不一样,其目的是防止用户弄乱或看到数据。 数据在使用时应该是完全透明的。 另外请注意:我愿意使用SQLCipher来存储数据,但更愿意使用已经存在于iPhone / CoreData框架上的东西,而不是经历冗长的构build/整合过程。

核心数据实现枚举的最佳方式

将Core Data实体绑定到枚举值的最佳方法是什么,以便我能够为实体指定一个types属性? 换句话说,我有一个名为Item的实体,我想绑定到一个枚举的itemType属性,什么是最好的方式去做这个。

CoreData关系错误?

我有一个与单位有“一对多”关系的订单。 当我尝试按顺序login单元(NSSet)时,出现错误: NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Order" inManagedObjectContext:mainContext]; [fetchRequest setEntity:entity]; NSArray *fetchedObjects = [mainContext executeFetchRequest:fetchRequest error:nil]; for (Order *order in fetchedObjects) { NSLog(@"%@", [order units]); break; } [fetchRequest release]; 结果是: Relationship 'units' fault on managed object (0x6d9dd00) <Order: 0x6d9dd00> (entity: Order; id: 0x6d88e40 <x-coredata://97A3F3D5-ABA7-499A-A460-5E25CF49C528/Order/p1> ; data: { composition = […]

NSFetchedResultsController与UILocalizedIndexedCollat​​ion

我正在尝试使用具有混合语言数据的FRC,并希望有一个段索引。 从文档看来,您应该能够覆盖FRC – (NSString *)sectionIndexTitleForSectionName:(NSString *)sectionName – (NSArray *)sectionIndexTitles 然后使用UILocalizedIndexedCollat​​ion来获得本地化的索引和部分。 但可悲的是,这是行不通的,不是什么打算使用:( 有没有人能够使用UILocalizedIndexedCollat​​ion FRC或我们被迫使用示例UITableView + UILocalizedIndexedCollat​​ion示例中提到的手动sorting方法(示例代码包括我得到这个工作)。 使用以下属性 @property (nonatomic, assign) UILocalizedIndexedCollation *collation; @property (nonatomic, assign) NSMutableArray *collatedSections; 和代码: – (UILocalizedIndexedCollation *)collation { if(collation == nil) { collation = [UILocalizedIndexedCollation currentCollation]; } return collation; } – (NSArray *)collatedSections { if(_collatedSections == nil) { int sectionTitlesCount = [[self.collation […]

核心数据主键

这可能看起来很愚蠢,但我仍然不知道如何将属性标记为xcdatamodel文件中的主键。 我的持久性存储是sqlite文件。 任何人都可以帮我吗? 在这种情况下,我如何“validation”一个ID是唯一的? 我应该写一个validation方法什么的?