2013-05-02 39 views
13

Làm cách nào để tạo một lớp Objective-C với các biến cấp lớp như lớp Java này?Khai báo các biến thành viên tĩnh như Java trong Mục tiêu-C

public class test 
{ 

    public static final String tableName = "asdfas";  
    public static final String id_Column = "_id"; 
    public static final String Z_ENT_Column = "Z_ENT"; 

} 

Tôi muốn để truy cập chúng mà không làm một ví dụ, như:

String abc = test.tableName; 
+0

Bạn có hỏi về các phương pháp lớp trong Obj-c không? –

+0

NSString tĩnh * CellIdentifier = @ "reuseStaticIdentifier"; –

+0

không, xin vui lòng xem lớp java trong câu hỏi, tôi muốn một cái gì đó như nhau. –

Trả lời

26

Dường như bạn muốn tạo hằng (kể từ khi bạn đang sử dụng final trong câu hỏi của bạn). Trong Objective-C, bạn có thể sử dụng extern cho điều đó.

Làm điều gì đó như sau:

1) Tạo lớp Objective-C mới có tên là hằng số.

2) Trong header (.h) file:

extern const NSString *SERVICE_URL; 

3) Trong việc thực hiện (.m) file:

NSString *SERVICE_URL = @"http://something/services"; 

4) Thêm #import "Constants.h" cho bất kỳ lớp học nơi bạn muốn sử dụng nó

5) truy cập trực tiếp như NSString *url = SERVICE_URL;


Nếu bạn không muốn tạo hằng và chỉ muốn sử dụng static trong Mục tiêu-C, rất tiếc, bạn chỉ có thể sử dụng static trong tệp triển khai (.m). Và chúng có thể được truy cập trực tiếp mà không cần đặt trước tên lớp.

Ví dụ:

static NSString *url = @"something"; 

Tôi hy vọng điều này sẽ giúp.

+0

extern không được coi là cách tốt nhất để lập trình. –

+0

'const' trong' const NSString * 'không có ý nghĩa. bạn không được phép thao tác đối tượng được trỏ trực tiếp bởi bất kỳ con trỏ nào – newacct

+0

@AnoopVaidya: có gì sai với 'extern'? Trong mã Java ban đầu, các biến đó đặc biệt là 'công khai', có nghĩa là chúng có thể sử dụng được từ các tệp khác. 'extern' là chính xác những gì cho phép điều này. – newacct

22

Hãy thử nó ....

static NSString *CellIdentifier = @"reuseStaticIdentifier"; 

Bạn có thể truy cập giá trị trực tiếp sử dụng tài sản tổng hợp
hoặc bạn có thể sử dụng NSUserDefaults để lưu trữ và truy xuất lại giá trị

Mô tả

@interface MyClass : NSObject 
+(NSString *)myFullName; 
@end 

Thực hiện:

#import "MyClass.h" 

@implementation MyClass 
static NSString *fullName = @"Hello World"; 

+(NSString *)myFullName{ 
    return fullName; 
} 
@end 

Sử dụng:

#import "MyClass.h" 

@implementation AppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{ 
    NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value. 
} 

@end 

Hope i giúp.

1

biến lớp Objective-C không có

tôi sẽ khuyên bạn nên đặt các NSString tĩnh trong file thi hành lớp học của bạn, và cung cấp các phương thức lớp để truy cập nó

@implementation MyClass 

static NSString* str; 
1

thể được thực hiện như rằng:

@interface Test 
{ 
    static NSString *tableName; 
} 

+(NSString *) getTableName; 
@end 

@implementation Test 
+ (NSString *)getTableName 
{ 
    return tableName; 
} 
@end 

Và sau đó bạn lấy nó:

NSString *name = [Test getTableName]; 
7

Bạn cần sử dụng một phương thức lớp để truy cập vào bất kỳ thứ gì có thể được gọi là mà không cần tạo một thể hiện.

@interface MyClass : NSObject 
+(NSString *)myFullName; 
@end 

Thực hiện:

#import "MyClass.h" 

@implementation MyClass 
    static NSString *[email protected]"anoop vaidya"; 

+(NSString *)myFullName;{ 
    return fullName; 
} 
@end 

Làm thế nào để sử dụng:

#import "MyClass.h" 

@implementation AppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{ 
    NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value. 
} 

@end 
1

Tôi nghĩ rằng cách tốt nhất và nhiều hơn nữa sử dụng là sử dụng enums như

enum{ 
    GSPAYMENT_METHOD_CARD = 1, 
    GSPAYMENT_METHOD_CASH = 2, 
    GSPAYMENT_METHOD_VOID = 3 
}; 
typedef NSUInteger PaymentMethodType; 

Ngay trước khi @interface GSPaymentMethod

Bằng cách này bạn có thể sử dụng những hằng số bất cứ nơi nào bằng cách chỉ bao gồm các .h tập tin

Ví dụ:

[self newPayment:GSPAYMENT_METHOD_CASH]

Các vấn đề liên quan