从MWPhoto获取图片网址?

时间:2011-05-10 21:17:02

标签: objective-c cocoa-touch xcode ios4

我正在使用MWPhotoBrowser (here),我正在尝试获取您当前所在的图像。

我试试这个:

MWPhoto *theObject = [photos objectAtIndex:currentPageIndex];
NSString *test = [theObject image];
NSLog(@"maybe? %@", test);

我得到了这个

maybe? <UIImage: 0x4e5e890>

这很好,但我想得到当前图片的网址。

任何帮助表示赞赏,

2 个答案:

答案 0 :(得分:2)

在MWPhoto.h中添加:

- (NSURL *)url;
- (NSString *)path;

第45行

在MWPhoto.m中添加:

// Return URL
- (NSURL *)url { return self.photoURL; }

// Return Path
- (NSString *)path { return self.photoPath; }

第88行

您的代码在哪里,执行类似

的操作
MWPhoto *theObject = [photos objectAtIndex:currentPageIndex];
NSString *path = [theObject path];
NSURL *url = [theObject url];
NSString *urlString = [url absoluteString];
NSLog(@"path %@", path);
NSLog(@"url %@", path);

要使用NSURL,请查看http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html

答案 1 :(得分:0)

如果有其他人在寻找解决方案,我希望这个会有所帮助。

我已经使用MWPhotoBrowser很长时间了。以前,在他们的.h文件中,我们可以使用photoUrl。现在他们转移到.m,我们无法访问外面的财产。

由于我使用的是cocoapods中的库,我也不想修改他们的代码。所以,我创建了这样的类别。我将在MWPhoto中单独指定photoUrl。

在MWPhoto + Property.h中,

#import <MWPhotoBrowser/MWPhotoBrowser.h>

@interface MWPhoto (Property)
@property (nonatomic, strong) NSURL *photoUrl;
@end

在MWPhoto + Property.m中,

#import "MWPhoto+Property.h"
#import <objc/runtime.h>

@implementation MWPhoto (Property)

static char UIB_PROPERTY_PHOTOURL;

@dynamic photoUrl;

- (void)setPhotoUrl:(NSURL *)photoUrl {
    objc_setAssociatedObject(self, &UIB_PROPERTY_PHOTOURL, photoUrl, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

- (NSURL *)photoUrl {
    return (NSURL *)objc_getAssociatedObject(self, &UIB_PROPERTY_PHOTOURL);
}


@end

然后,当我初始化MWPhoto时,我也放了photoUrl。

NSURL *photoUrl = [NSURL URLWithString:messageData.dataDict[@"image"]];
MWPhoto* photo = [MWPhoto photoWithURL:photoUrl];
photo.photoUrl = photoUrl; //Due to new implementation in MWPhotoBrowser, property of photoUrl is hidden. So, i put in category
[self.photos addObject: photo];

//Later, you can access photo.photoUrl in other places.