有没有办法在xCode中的另一个实现文件中导入实现文件(.m)?

时间:2014-02-08 21:29:17

标签: ios objective-c xcode

我的问题是我在实现文件中声明了一些字符串,数组....我想要一种包含(比如在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]]; }}

有关如何解决此问题的任何想法?

3 个答案:

答案 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;
在YourClass.h中

使用+而不是-创建方法(这些方法类似于静态方法):

+ (void)setCoordiString:(NSString*)string;
在YourClass.m

    + (void)setCoordiString:(NSString*)string{
         coordi = string;
    }

现在,无论你想设置YourClass的coordi字符串,只需这样做:

首先,导入YourClass.h

#import "YourClass.h"

然后这个代码就在您想要设置coordi的那一刻:

[YourClass setCoordiString:@"Your String Here!"];

希望它有所帮助!