Figure 9-27 Analyze getTimelineDataItemOfIndex
Therefore, the argument of getTimelineDataItemOfIndex: can be obtained from
[WCTimeLineViewController calcDataItemIndex:[indexPath section]]. Because we are inside
[WCContentItemViewTemplateNewSight onLongTouch], we can get MMTableViewCell,
MMTableView and WCTimeLineViewController in sequence via [self nextResponder], then get
indexPath via [MMTableView indexPathForCell:MMTableViewCell], and the whole process has
already been proved in section 9.2.6. Although it looks inconvenient, obtaining the
WCDataItem object from WCContentItemViewTemplateNewSight conforms to standard
MVC design pattern at least. It is worth mentioning that the prefixes of
WCTimeLineViewController and WCContentItemViewTemplateNewSight are WC, I guess it
is short for WeChat; the prefixes of MMTableViewCell and MMTableView are MM, I guess it is
short for MicroMessenger. The difference of prefixes may be exactly caused by different
subprojects and teams. Next, we will focus on WCDataItem and try to get the download URL
and local path of the Sight.
9.2.9 Get target information from WCDataItem
Open WCDataItem.h and take an overview:
@interface WCDataItem : NSObject <NSCoding>
{
int cid;
NSString *tid;
int type;
int flag;
NSString *username;
NSString *nickname;
int createtime;
NSString *sourceUrl;
NSString *sourceUrl2;
WCLocationInfo *locationInfo;
BOOL isPrivate;
NSMutableArray *sharedGroupIDs;
NSMutableArray *blackUsers;
NSMutableArray *visibleUsers;
unsigned long extFlag;
BOOL likeFlag;
int likeCount;
NSMutableArray *likeUsers;
int commentCount;
NSMutableArray *commentUsers;
int withCount;
NSMutableArray *withUsers;
WCContentItem *contentObj;
WCAppInfo *appInfo;
NSString *publicUserName;