如何在另一个类中调用category方法

时间:2014-07-08 03:46:38

标签: ios objective-c

我有类别类有编码网址的方法。那么如何在另一个类中使用此方法。提前谢谢

的NSString + EncodeURL.h

#import <Foundation/Foundation.h>

@interface NSString (EncodeURL)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding;
@end

的NSString + EncodeURL.m

-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
    return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,
                                                               (CFStringRef)self,
                                                               NULL,
                                                               (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",                                                               CFStringConvertNSStringEncodingToEncoding(encoding)));
}

在另一个班级。如何使用Category类

中的urlEncodeUsingEncoding将urlString转换为字符串
#import "WatchVideosViewController.h"
#import "CustomCell.h"
#import "ImageRequest.h"
#import "Constant.h"
#import "ImageCache.h"
#import "NSString+EncodeURL.h"
@interface WatchVideosViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageBackground;

@end

@implementation WatchVideosViewController

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    static NSString * CellIndentifier = kCellName;
    CustomCell *cell = (CustomCell*)[collectionView dequeueReusableCellWithReuseIdentifier:CellIndentifier forIndexPath:indexPath];
    NSDictionary *dictVideo = [self.videoList objectAtIndex:indexPath.row];
    //start indicator
    [cell.indicator startAnimating];
    //set title
    NSString *titleVideo = [dictVideo objectForKey:kTitleKey];
    [cell.myLabel setText:titleVideo];
    // set image url
    NSString *urlVideo = [dictVideo objectForKey:kUrlKey];
    NSURL *url = [NSURL URLWithString:urlVideo];
    NSString *urlString = [url absoluteString];
    NSString *encodeURL=[urlString ]
//encode url

5 个答案:

答案 0 :(得分:3)

在您要使用-urlEncodeUsingEncoding:的文件中,只需添加:

#import "NSString+EncodeURL.h"

该文件中的所有NSString个实例都将回复-urlEncodeUsingEncoding:

答案 1 :(得分:1)

import“NSString + EncodeURL.h”

在类中你想运行NSString + EncodeURL.h - 这个类的方法

现在你必须选择在哪个地方运行(NSString + EncodeURL.h)这个类的方法。

假设您希望它在viewDidLoad中运行,那么 在方法中创建类的实例。

NSString + EncodeURL * myInstance; [myInstance methodname];

答案 2 :(得分:1)

在要使用类别方法的类中,只需导入类别标题,如下所示。

#import "NSString+EncodeURL.h"

然后,使用下面的类别方法

NSString *encodeURL = [urlString urlEncodeUsingEncoding:urlString];

多数民众赞成,简单,宾果!

答案 3 :(得分:0)

如同您的代码中所示,如果您想对网址进行编码,只需编写

即可
NSString *encodeURL=[urlString urlEncodeUsingEncoding:NSUTF8StringEncoding]; //whataver encoding you want just pass

如果没有显示代码完成,那么索引可能会出现问题,只需终端xcode重新打开clean和build.It应该可以工作。

答案 4 :(得分:0)

NSStringEncoding的示例是NSUTF8StringEncoding。您可以通过调用将urlString转换为encodeURL:

NSString *encodeURL=[urlString urlEncodeUsingEncoding:NSUTF8StringEncoding];

函数CFStringConvertNSStringEncodingToEncoding()会将NSUTF8StringEncoding转换为kCFStringEncodingUTF8