我们可以将NSURLRequest直接存储到核心数据中吗



我正在开发iPad应用程序,需要在其中创建多个NSURLRequest。当它失败时,我需要再次启动该URL请求。

我有三种类型的请求(创建学校、创建楼层和创建房间),其中包含多个参数不同的创建请求。

有一种重审方法,当有互联网可用时,可以启动第一次请求创建的相同对象。

所以我试图创建三个表,并试图存储所有参数及其状态。

是否可以使用NSURLRequest创建单个表,而不考虑create REQUEST?

所以我提出了自己的想法,并与大家分享。

根据我的阅读和谷歌搜索,我无法将NSURLRequest存储到核心数据中。因为我不知道物体的类型。

我将创建核心数据表与列PARAMS,方法,URL

所以我可以创建一个表,它将包含PARAMS(Dict)、Methods(PUT、GET等)、URL列。

我将要做的是,我可以将DICT参数转换为NSKeyedArchiver,并将其保存到PARAM列中。URL和METHODS在单独的列中。

当我需要保存请求时,我可以从表中获取并发送到服务器。

核心数据实体对应于NSManagedObject的实例或NSManagedObject的子类,因此不能直接保存URL请求。你可以做的是创建一个名为SavedRequest的实体,它有一个表示URL请求的属性——也许还有关于请求的其他一些细节(你可能需要的任何其他信息——也许是日期?)。

由于NSURLRequest符合NSCoding,因此您将使用核心数据"可转换"类型创建此属性。核心数据将使用NSCoding根据需要自动转换到NSData。您将为属性分配一个NSURLRequest并将其读回,Core Data将它们保存为NSData

根据你的描述,核心数据可能没有意义。听起来你只想保存一个URL请求列表,然后再读回来,不需要Core Data提供的额外功能。将NSURLRequest对象放在数组中,然后将该数组保存到文件或用户默认值会更简单。您可以自己转换为NSData,但由于可以使用NSCoding,所以这很容易。

要保存数组,您可以这样做,假设一个名为myArray的数组包含URL请求和filePath:中的路径

BOOL success = [NSKeyedArchiver archiveRootObject:myArray toFile:filePath];

你可以使用取回阵列

NSArray *savedRequests = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

您可能只需要保存NSURLRequest的URL属性的absoluteString。还是它们都有不同的超时或缓存策略?

是的,这是可能的,至少在Swift中是这样。使用Swift,您可以访问CoreData中的Transformable属性。使用此属性可以将任何类型的数据放入核心数据中。即使没有额外的开销。

查看优秀教程http://geekyviney.blogspot.nl/2015/02/transformable-binary-data-properties-in.html

相关内容

  • 没有找到相关文章

最新更新