我的问题是我在实现文件中声明了一些字符串,数组....我想要一种包含(比如在PHP中)以避免声明错误......
例如,在下面的代码 coordi (参见最后一行的末尾)一个在另一个实现文件中声明的NSString,在我的代码中,xCode给出了一个错误,指出< strong> coordi 未声明,但它在另一个实现文件中声明。
- (IBAction)searchButton:(id)sender { if (_searchQuery.text.length < 3 ) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No destination !" message:@"Please enter a destination !" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil]; [alert show]; } else { [self performSegueWithIdentifier:@"seg_map" sender:self]; NSString *query = [[self.searchQuery text] stringByReplacingOccurrencesOfString: @" " withString:@"\%20"]; NSURL *jsonURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&sensor=false", coordi, query]]; }}
有关如何解决此问题的任何想法?
答案 0 :(得分:3)
您应该将此声明为const字符串。然后在.h文件中,您应该使用extern说明符指定const。这将使其可用于导入.h文件的任何文件。
这里有更好的答案: Constants in Objective-C
答案 1 :(得分:2)
在已定义coordi变量的.m文件的头文件中,您必须执行声明。
FOUNDATION_EXPORT NSString *coordi; // Can use extern if mixing with C++
在您的实施文件中,您可以
NSString *coordi= @"myString";
现在,无论您是否包含标题,您都可以访问该变量。
答案 2 :(得分:1)
(我假设coordi变量所在的类称为YourClass
)
将coordi
变量设为static
,只关注@implementation YourClass
,如下所示
static NSString *coordi;
使用+
而不是-
创建方法(这些方法类似于静态方法):
+ (void)setCoordiString:(NSString*)string;
+ (void)setCoordiString:(NSString*)string{
coordi = string;
}
现在,无论你想设置YourClass的coordi字符串,只需这样做:
首先,导入YourClass.h
:
#import "YourClass.h"
然后这个代码就在您想要设置coordi的那一刻:
[YourClass setCoordiString:@"Your String Here!"];
希望它有所帮助!