我非常喜欢iOS,所以我没有想法。我正在开发一个应用程序,我从服务器提取数据。所以我有一些网址,我将从中获取数据。我想要在单独的文件中删除所有网址&在另一个文件中使用它们。我创建了AppConst.h& AppConst.m。
AppConst.h
#import <Foundation/Foundation.h>
@interface AppConstant : NSObject
extern NSString const *BASE_URL;
extern NSString const *LOGIN;
extern NSString const *CREATE_ACCOUNT;
extern NSString const *UPDATE_PROFILE;
extern NSString const *ADD_BUSINESS_CARD;
extern NSString const *ADD_NONBUSINESS_CARD;
extern NSString const *ADD_EVENT_CARD;
@end
AppConst.m
#import "AppConstant.h"
@implementation AppConstant
NSString const *BASE_URL=@"http://localhost:8080/app/v1";
NSString const *LOGIN=@"/login";
NSString const *UPDATE_PROFILE=@"/create_account";
NSString const *ADD_BUSINESS_CARD=@"/addBusinessCard";
NSString const *ADD_NONBUSINESS_CARD=@"addNonBusinessCard";
NSString const *ADD_EVENT_CARD=@"addEventCard";
@end
但我无法使用 LOGIN 网址附加 BASE_URL 字符串。 我收到如下错误
sending 'const_NSString *__strong' to parameter of type "NSString discards qualifiers.
答案 0 :(得分:1)
您应该按如下方式声明常量字符串:
#define kSomeConstantString @""
前者是指向NSString对象的常量指针,而后者是指向常量NSString对象的指针。
使用NSString * const会阻止您重新分配kSomeConstantString以指向不同的NSString对象。
方法isEqualToString:需要一个类型为NSString *的参数。如果将指针传递给常量字符串(const NSString *),则传递的内容与预期的不同。
此外,NSString对象已经是不可变的,因此将它们设为const NSString是没有意义的。
否则你也可以像这样声明常量
{{1}}
答案 1 :(得分:0)
更好的想法使constants文件是创建头文件并添加所有静态常量,如下所示:
// Host Url
#define BASE_URL @"http://localhost:8080/app/v1"
// login Url
#define LOGIN @"/login"
并在父视图控制器中添加常量file.h,而不是在应用程序中的任何位置使用。即使你想附加字符串,你也可以使用下面的代码从你的代码中创建url:
NSString *loginURL = [NSString stringWithFormat:@"%@%@", BASE_URL, LOGIN];
谢谢,可以帮助你学习新东西。