我是一名新手iOS学习者。搜索一段时间后无法找到以下问题的答案。因此,在这里。
在第一个显示来自用户Instagram Feed的图片的应用程序的基础上,我试图显示来自该用户的以下图片。
要从Instagram Feed调用最近的图片,效果很好,我创建了以下方法" imageForPhoto"
+ (void)imageForPhoto:(NSDictionary *)photo size:(NSString *)size completion:(void(^)(UIImage *image))completion {
if (photo == nil || size == nil || completion == nil) {
return;
}
NSString *key = [[NSString alloc] initWithFormat:@"%@-%@", photo[@"id"], size];
NSURL *url = [[NSURL alloc] initWithString:photo[@"images"][size][@"url"]];
[self downloadURL:url key:key completion:completion];
}
因此,我首先修改了我的代码以获取与"相关的数据"在我的PhotosViewController而不是最近的媒体图片(v1 / users / 3 / follow):
NSURLSession *session = [NSURLSession sharedSession];
NSString *urlString = [[NSString alloc] initWithFormat:@"https://api.instagram.com/v1/users/3/follows?count=99&access_token=%@", self.accessToken];
然后,我创建了一个名为friendAvatarForPhoto的新方法,从照片NSDictionary中获取以下的个人资料图片,该照片作为唯一的方法参数传入。我把这个方法放在我的PhotoController类中:
+ (void)friendAvatarForPhoto:(NSDictionary *)photo completion:(void(^)(UIImage *image))completion {
if (photo == nil || completion == nil) {
return;
}
NSString *key = [[NSString alloc] initWithFormat:@"avatar-%@", photo[@"user"][@"id"]];
NSURL *url = [[NSURL alloc] initWithString:photo[@"profile_picture"]];
[self downloadURL:url key:key completion:completion];
}
似乎有效。我已手动检查在我的UICollectionView上呈现的图片实际上是来自" profile_picture" responseDictionary的关键词我从Instagram回来了。
以下是此词典的结构:https://www.dropbox.com/s/ldjqupadqg0j3nq/friends_response_dictionary.png
具体来说,正如您所看到的,我修改了密钥和网址:
NSString *key = [[NSString alloc] initWithFormat:@"avatar-%@", photo[@"user"][@"id"]];
NSURL *url = [[NSURL alloc] initWithString:photo[@"profile_picture"]];
但是我并没有真正理解我需要用*键初始化*键字符串...我保持" avatar"例如,但我为什么要这样做?我很确定它是错的,虽然结果似乎与我的UICollectionView上返回的结果一样好。
我应该用什么方式启动此字符串? 整个NSURLSession过程中此键的功能是什么?
我希望能够更好地了解整个过程,并通过Instagram的API更好地连接点,这样我就可以查询正确的密钥并确保获得我想要的内容。以可靠的方式,而不是像我刚刚做的那样直观。
欢迎来自社区中经验丰富的开发人员的任何帮助,几周前我就开始根据生锈的C技能开始探索iOS开发。
谢谢! :) Arsene