如何将AFIncrementalStore映射到Twitter API v1.1?

时间:2014-06-22 21:03:47

标签: ios core-data ios7 twitter afincrementalstore

如何将AFIncrementalStore映射到Twitter API v1.1?


AFNetworking核心数据持久性,做得好

https://github.com/AFNetworking/AFIncrementalStore

REST API v1.1资源

https://dev.twitter.com/docs/api/1.1


- (id)representationOrArrayOfRepresentationsOfEntity:(NSEntityDescription *)entity
                                  fromResponseObject:(id)responseObject;

- (NSDictionary *)representationsForRelationshipsFromRepresentation:(NSDictionary *)representation
                                                           ofEntity:(NSEntityDescription *)entity
                                                       fromResponse:(NSHTTPURLResponse *)response;

- (NSString *)resourceIdentifierForRepresentation:(NSDictionary *)representation
                                         ofEntity:(NSEntityDescription *)entity
                                     fromResponse:(NSHTTPURLResponse *)response;

- (NSDictionary *)attributesForRepresentation:(NSDictionary *)representation
                                     ofEntity:(NSEntityDescription *)entity
                                 fromResponse:(NSHTTPURLResponse *)response;

- (NSMutableURLRequest *)requestForFetchRequest:(NSFetchRequest *)fetchRequest
                                    withContext:(NSManagedObjectContext *)context;

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
                       pathForObjectWithID:(NSManagedObjectID *)objectID
                               withContext:(NSManagedObjectContext *)context;

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
                       pathForRelationship:(NSRelationshipDescription *)relationship
                           forObjectWithID:(NSManagedObjectID *)objectID
                               withContext:(NSManagedObjectContext *)context;

1 个答案:

答案 0 :(得分:2)

我不知道我写的内容是否真的有用,但这就是我所知道的:

AFIncrementalStore有一些严重的问题,显然已被它的创作者抛弃,因为它与AFNetworking v.2不相容

问题源于AFIS试图不仅仅是增量存储这一事实。 增量存储仅在其覆盖方法内运行,AFIS执行此操作以立即从后备存储返回对象。但是,当请求最终进入时,它无法以这种方式添加对象。它将它们添加到后备存储,然后尝试刷新其上下文中的对象。 Core Data创建者没有想到这种行为,导致行为不稳定 - AFIS有时会有很长的响应时间,有时对象无法正常刷新。此外,如果您使用NSFetchedResultsController来提供表视图,则会经常调用某些回调,而从不会调用某些回调。

我花了很多时间试图让这个工作,但它可能是不可能的 - 你必须欺骗你正在向上下文添加对象的核心数据,而从不这样做。

回到你的问题 - 如果你真的想要使用它 - 你基本上必须为twitter编写所有这些方法。这是一项艰苦的工作,但twitter必须有一些对象模型,并为每个对象分配一些id。我为我的API做了这个,但这就像一两天的辛苦工作 - 我没有那么多时间在这里写。