ios - 'NSString' 没有可见的@interface 声明选择器 URLEncodeUsingEncoding

标签 ios objective-c nsstring

我是ios新手,反对C。

我正在尝试对 url 进行编码,但是我收到了错误

/Users/zupportdesk/Desktop/MyIOSApps/ZDticketSystem/ZDticketSystem/ViewController.m:313:52: No visible @interface for 'NSString' declares the selector 'URLEncodeUsingEncoding:'

#import "ViewController.h"
#import "AppDelegate.h"
#import "ApplicationEnvironmentURL.h"
#import "AFNetworking/AFNetworking.h"
#import "HHAlertView/HHAlertView.h"
#import "MBProgressHUD/MBProgressHUD.h"
#import "AppDelegate.h"


@interface ViewController ()<UITextFieldDelegate, UIActionSheetDelegate> {
    ApplicationEnvironmentURL *applicationEnvironment;
    NSString *BASEURL;
    NSString *global_profileId;
    AppDelegate *delegate;
}

@property (nonatomic, strong) NSString *username;
@property (nonatomic, strong) NSString *password;
@end

@implementation ViewController
--- defaults methods here

- (void)setupProfileidURL:(NSString *)profileToken {
    NSString *encoded_profileToken = [profileToken URLEncodeUsingEncoding:NSUTF8StringEncoding];
    NSString *user_login_url = [applicationEnvironment get_user_api_url];
    BASEURL = [[user_login_url stringByAppendingString:@"Account/GetProfileDetails?profileToken="] stringByAppendingString:encoded_profileToken];
    NSLog(@"Base URL: %@", BASEURL);
}

我是这样调用方法的 [self setupProfileidURL:profileToken];

查看Holder头文件

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITextField *tv_username;
@property (weak, nonatomic) IBOutlet UITextField *tv_password;

@end

我想实现这个https://madebymany.com/blog/url-encoding-an-nsstring-on-ios .谁能帮我解决这个 url 编码问题。

最佳答案

你收到了这条消息

No visible @interface for 'NSString' declares the selector 'URLEncodeUsingEncoding:'

因为 URLEncodeUsingEncoding 是在类别中定义的方法,而您没有在类中使用该类别,这就是您收到此消息的原因。

此外,CFURLCreateStringByAddingPercentEscapes 已从 iOS 中弃用,因此您可以使用 stringByAddingPercentEncodingWithAllowedCharacters

下面是你的函数的一个例子

- (void)setupProfileidURL:(NSString *)profileToken {
    NSString *encoded_profileToken = [profileToken stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    NSString *user_login_url = [applicationEnvironment get_user_api_url];
    BASEURL = [[user_login_url stringByAppendingString:@"Account/GetProfileDetails?profileToken="] stringByAppendingString:encoded_profileToken];
    NSLog(@"Base URL: %@", BASEURL);
} 

另外,根据@Larme 的评论,您可以创建一个类别并通过导入在您的应用程序中使用它。

关于ios - 'NSString' 没有可见的@interface 声明选择器 URLEncodeUsingEncoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40259632/

相关文章:

ios - iOS中的主线程实现

ios - UNNotificationContentExtension 不显示

ios Objective C 委托(delegate)方法

iphone - iOS 中无休止的重复滚动/动画背景?

objective-c - 如何通过 Carthage 在 Obj-C 项目中使用 Swift 库

iphone - 无法将 NSString 对象复制到我的自定义对象的属性 Objective-c

ios - NSDateFormatter 是如何工作的?

ios - 如何组合 2 个键以实现可本地化

ios - 无法为类型 UnsafeMutablePointer<UInt8> 调用初始值设定项

ios - 应用程序可用内存