2010-07-23 17 views
30

Dự án của tôi có nhiều mục tiêu. Mỗi mục tiêu có tệp Class riêng để thiết lập nội dung. Tôi muốn lưu trữ tên Class đó trong cài đặt đích (Info.plist hoặc cài đặt Tòa nhà của mục tiêu). Để tôi có thể định nghĩa lớp nào tôi cần sử dụng trong mỗi mục tiêu dựa trên cài đặt này.iphone: nhận biến Người dùng xác định trong cài đặt Nhắm mục tiêu theo mã?

Theo this question, tôi đặt "biến số mục tiêu cụ thể User Defined" trong mỗi Cài đặt tòa nhà của mục tiêu.

Nhưng không biết cách lấy lại mã của tôi?

+0

nào nhắm mục tiêu thiết lập bạn có nghĩa là gì? Cài đặt bản dựng? Info.plist? Bạn đã đặt biến ở đâu? – tonklon

+0

Tôi đặt nó trong Cài đặt Xây dựng của Mục tiêu. – KONG

Trả lời

65

Như file Info.plist được xử lý trước cũng vậy, bạn có thể sử dụng phương pháp này:

Xác định một Người dùng xác định thiết lập trong cài đặt xây dựng của bạn , ví dụ CLASS_NAME. Và chìa khóa cho tệp Info.plist của bạn. Đặt tên cho khóa CLASS_NAME và đặt giá trị thành ${CLASS_NAME}.

Sau đó bạn có thể truy cập vào thiết lập này bằng cách:

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"]; 
9

Bạn không thể trực tiếp sử dụng biến được xác định trong cài đặt bản dựng. Các biến này có nghĩa là được sử dụng bởi các công cụ xây dựng.

Thay vào đó xác định macro tiền xử lý trong Macro tiền xử lý biến như 'MYVAR = 5'. Bạn có thể truy cập các macro này trong mã của mình như:

#if MYVAR==5 
    //Do something 
#endif 

Xin lưu ý rằng việc đánh giá các biểu thức này xảy ra ở thời gian chạy không phải lúc chạy.

Cách sử dụng rất điển hình để chỉ xác định Macro mà không cần quan tâm đến giá trị. Ví dụ: xác định 'DEBUG = 1' trong cài đặt bản dựng gỡ lỗi và 'RELEASE = 1' trong cài đặt bản phát hành.

Sau đó bạn có thể kiểm tra bằng #ifdef hoặC#ifndef

#ifdef DEBUG 
    // Log 
#endif 
+0

Ồ, tôi hiểu rồi. Làm thế nào về Info.plist. Tôi có thể lưu trữ tên 'Lớp' ở đó và lấy nó từ mã không? – KONG

+0

Tôi đã thêm một câu trả lời khác, cho cách sử dụng info.plist. – tonklon

+4

Nếu tôi hiểu rõ, không có cách nào để lấy giá trị cài đặt xây dựng trực tiếp? Bởi vì đối với bí mật và chìa khóa (thay đổi theo cấu hình) sẽ tốt hơn nếu không đi qua Plist. – Rivera

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