如何在iOS中的gloabal变量中附加值?

时间:2015-06-23 05:15:46

标签: ios objective-c iphone ipad nsstring

我非常喜欢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.

2 个答案:

答案 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];

谢谢,可以帮助你学习新东西。