2012-04-25 27 views
9

tôi xác định một loạt các hằng chuỗi như dưới đây, theo cách vĩ mô,Mục tiêu-C: cách nhóm một chuỗi các hằng số chuỗi?

#define EXT_RESULT_APPID @"appid" 
#define EXT_RESULT_ERROR_CODE @"errorcode" 
#define EXT_RESULT_PROGRESS @"progress" 
... 

Tất cả những hằng số có nghĩa vụ phải được sử dụng trong cùng một bối cảnh, vì vậy Tôi muốn hạn chế chúng trong một không gian tên giống nhau, và Tôi không muốn biến chúng thành toàn cầu, giống như những gì mà post nói.

Mặt khác, tôi có thể đặt tất cả các hằng số dạng số trong một enum nhưng nó không hoạt động đối với chuỗi. Sau đó, làm thế nào tôi có thể nhóm các hằng số chuỗi có liên quan này?

Trả lời

25

Dưới đây là một cách tiếp cận:

MONExtResult.h

// add __unsafe_unretained if compiling for ARC 
struct MONExtResultStruct { 
    NSString * const AppID; 
    NSString * const ErrorCode; 
    NSString * const Progress; 
}; 

extern const struct MONExtResultStruct MONExtResult; 

MONExtResult.m

const struct MONExtResultStruct MONExtResult = { 
    .AppID = @"appid", 
    .ErrorCode = @"errorcode", 
    .Progress = @"progress" 
}; 
.210

Trong sử dụng:

NSString * str = MONExtResult.AppID; 
+0

là giải pháp này đúng và sẽ không gây ra bất kỳ rò rỉ bộ nhớ? sẽ luôn luôn là những chuỗi được giữ lại/không phải là không? – user969153

+0

@ user969153 như 'NSString tĩnh * const SomeConstant = @" SomeConstant ";', chuỗi là bất tử. – justin

+0

Nếu bạn chỉ muốn sử dụng cấu trúc/chuỗi trong một lớp đơn/m tập tin Có anyway để làm điều này mà không cần phải khai báo các biến và xác định giá trị của họ một cách riêng biệt? (Để lưu bản mẫu soạn thảo) –

0

Tạo tệp tiêu đề nơi bạn khai báo chuỗi và nhập vào khi cần

+0

Bạn có nghĩa là tệp tiêu đề chứa tất cả các hằng số? Tôi đã làm như vậy, nhưng tôi không nghĩ rằng đó là vì mục đích của tôi – fifth

+0

tại sao không? bạn có thể bao gồm chúng trong bối cảnh cụ thể và được thực hiện với nó – MJB

0

Bạn có thể tạo tên tệp tiêu đề "Constants.h". Sau đó, bạn cần phải nhập khẩu tập tin tiêu đề này mà bạn muốn sử dụng các hằng số như:

#import "Constants.h" 
0

Tạo một tập tin header nói Constants.h

Thêm tất cả các hằng số trong tập tin này. Đây có thể là hằng số mà bạn muốn sử dụng trong các lớp học trì hoãn của dự án của bạn.

#define EXT_RESULT_APPID @"appid" 
#define EXT_RESULT_ERROR_CODE @"errorcode" 
#define EXT_RESULT_PROGRESS @"progress" 

Bây giờ, thay vì nhập khẩu Constants.h này trong mỗi lớp, goto <project name>-Prefix.pch file và import File ở đây.

#import "SCConstants.h" 

bây giờ bạn có thể sử dụng hằng số trong bất kỳ lớp nào của dự án một cách dễ dàng.

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