如何将基本核心数据存储保存到 Parse.com?
Posted
技术标签:
【中文标题】如何将基本核心数据存储保存到 Parse.com?【英文标题】:How to save a basic Core Data store to Parse.com? 【发布时间】:2013-10-11 20:26:12 【问题描述】:我查看并查看了 Parse 文档、SO 和 Google,但找不到将普通 ol'Core Data SQLite 文件存储到 Parse.com 的示例。最初我只想将 Core Data 文件存储为备份;最终我想添加 FTASync,然后让其他人能够利用这个 ios 应用程序中存储的核心数据文件。
有没有不使用 PFObject 的例子?有人可以指出我可以在 Parse 文档中找到如何执行此操作的地方吗?
【问题讨论】:
那么您是存储 SQLite 文件还是对象(针对 Parse 中定义的类)? 我都不做;我要让我的“鸭子排队”!我需要一个很好的 Parse“入门”,它描述了如何获取核心数据 d/b 并将其存储在 Parse.com 我正在使用 RestKit 和 Parse RESTful 接口。看不到 PFObject... 【参考方案1】:不,没有任何 PFObject 就无法做到这一点。从理论上讲,您只需使用
即可保存备份- (void)createBackupFromSQLiteStorageAtPath:(NSString*)path
NSString *name = [[NSDate date] description]; // for example, stringified date will act as name
PFFile *backup = [PFFile fileWithName:name contentsAtPath:path];
[backup saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error)
if (error)
// handle
else
// success
];
但是!如果您想从 parse 的文件服务器访问它,您需要以某种方式保留 PFFile 对象(您也可以存储 PFFile 的 url 属性 - 但它是 hack) - 这是 PFObject 提供帮助的情况。假设您已经备份了您的商店:
- (void)storeBackupFile:(PFFile*)file
PFObject *backup = [PFObject objectWithClassName:@"Backup"];
[backup setObject:file forKey:@"file"];
[backup setObject:[PFUser currentUser] forKey:@"user"];
[backup saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error)
if (error)
[backup saveEventually];
else
// success
];
因此,在此之后,您将在解析数据库中拥有 Backup
对象,并带有指向备份文件和创建备份的用户的链接。
更多注意事项:
1) 把这样的备份组织成 NSOperation 子类就好了。
2) 以这种方式使用 Parse 存储备份是个坏主意。 Parse 上的文件存储是非常昂贵的资源。此外,PFFile 具有本地缓存 - 每次备份时都会复制您的存储空间,因此应用程序的大小会随着经常备份而显着增加。
【讨论】:
非常感谢;这正是我想要的!我在哪里可以找到有关您所描述内容的更多信息?正如我所指出的,我看了又看,无济于事。一个好的“入门”文档将不胜感激。 :D 不幸的是我不知道这种指南=(我不确定,但我认为 Parse 示例(parse.com/tutorials)都不适合您的任务。但是,我建议您考虑( parse.com/tutorials/anypic) 示例,前三个步骤 - 他们有你需要的一切:保存文件,保存 pfobject。这个简短的教程 + 解析文档 parse.com/docs/ios/api(主要课程是PFObject
,PFFile
,PFQuery
,@987654330 @) 将让您了解主要框架的可能性。但不要使用任何图片作为您自己项目的基础 - 它可能包含旧版本的框架!
你不需要使用PFObject。 Parse 提供了多种不同的 API(PFObject 实际上只是其 RESTful 接口的包装器)。
@Wain,更进一步,可能根本不使用PFFile
- 并通过HTTP实现上传/下载(老实说它比PFFile
的save
/@987654334更快) @)。但是,如果任务不需要网络性能优化(我相信备份实际上并不需要它),最好使用现成的、经过测试的和供应商提供的解决方案,如 PFFile
和 PFObject
,而不是发明自己的自行车.另一个问题是文件存储...... Parse 对数据库来说很酷,并且文件存储非常昂贵。 Amazon S3 在备份方面要好得多……但这离题了以上是关于如何将基本核心数据存储保存到 Parse.com?的主要内容,如果未能解决你的问题,请参考以下文章
将 mogenerator 与 Core Data 实体一起使用会导致保存数据存储时出错
ParseObject.saveInBackground 方法以 java.net.SocketTimeoutException 结尾:将数据保存到 Parse.com 时为 null