我正在开发iPad应用程序,我需要创建多个NSURLRequest。 什么时候失败,我需要再次触发该URL请求。
我有三种类型(创建学校,创建楼层和创建房间)的请求,其中包含多个参数不同的创建请求。
当有第一个请求创建的相同对象的互联网可用时,可以触发重试方法。
所以我试图创建三个表,我试图将所有参数存储在其状态中。
是否可以使用NSURLRequest创建单表而不管CREATE REQUEST?
答案 0 :(得分:2)
所以我提出了自己的想法,我与所有人分享。
根据我的阅读和谷歌搜索,我无法将NSURLRequest存储到核心数据中。因为我不知道对象的类型。
我将使用列PARAMS,METHODS,URL
创建核心数据表所以我可以创建包含PARAMS(Dict),方法(PUT,GET等),URL列的Table。
我将做什么,我可以将DICT参数转换为NSKeyedArchiver并将其保存到PARAM列中。 URL和方法在单独的列中。
当我需要保存请求时,我可以从表中获取它并发送到服务器。
答案 1 :(得分:1)
核心数据实体对应NSManagedObject
的实例或NSManagedObject
的子类,因此您不能直接保存URL请求。你可以做的是创建一个名为SavedRequest
的实体,它有一个代表URL请求的属性 - 可能还有一些关于请求的其他细节(你可能需要的其他信息 - 日期,也许?)。 / p>
由于NSURLRequest
符合NSCoding
,您可以使用Core Data“transformable”类型创建此属性。核心数据将根据需要使用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];
答案 2 :(得分:0)
您可以保存NSURLRequest的n
属性的absoluteString
。或者他们每个人都有不同的超时或缓存政策?
答案 3 :(得分:0)
是的,这是可能的,至少对Swift而言。使用Swift,您可以访问CoreData中的Transformable属性。使用此属性可以在Core Data中放置任何类型的数据。这甚至没有额外的开销。
请参阅优秀教程http://geekyviney.blogspot.nl/2015/02/transformable-binary-data-properties-in.html