2010-01-14 62 views
7

Tôi đang phát triển một ứng dụng iPhone sử dụng máy chủ ở đâu đó để tìm nạp dữ liệu của nó. Một nơi nào đó trong mã nguồn của ứng dụng, tôi đã mã hóa URL để sử dụng để kết nối. Điều này là tốt, ngoại trừ việc tôi không luôn luôn muốn thử nghiệm bằng cách sử dụng một máy chủ sản xuất! Tôi không muốn gây rối với dữ liệu trực tiếp, chỉ để kiểm tra nội dung nào đó. Vì vậy, tôi thiết lập một phiên bản địa phương của cùng một máy chủ. Nhưng để làm cho ứng dụng iPhone sử dụng máy chủ đó là thay đổi URL được mã hóa cứng trong mã nguồn.iPhone - Chuyển đổi giữa cài đặt môi trường địa phương và môi trường sản xuất

Đây là một chút đau trong ass nếu bạn thường chuyển đổi giữa hai máy chủ. Ngoài ra, tôi có thể vô tình phát hành ứng dụng mà vẫn sử dụng URL cục bộ!

Tôi đã nghĩ rằng có thể XCode có thể giúp tôi với điều này vì nó có khái niệm về một "Debug" và một "Release" tùy chọn cấu hình để xây dựng với. Vì vậy, câu hỏi của tôi là: tôi có thể bằng cách nào đó thay đổi cấu hình Debug trong một cách mà nó trỏ đến URL máy chủ địa phương? Có thể thông qua trỏ đến một thuộc tính hoặc tệp plist chứa URL cụ thể của môi trường. Sau đó tôi có thể tạo hai phiên bản của tệp thuộc tính này và làm cho điểm cấu hình gỡ lỗi thành một, trong khi làm cho điểm cấu hình phát hành đến điểm khác.

Có ai biết cách tôi có thể thực hiện việc này không?

Trả lời

2

Trong một trong các tệp tiêu đề của bạn (chẳng hạn như tệp tiêu đề được biên dịch trước) xác định macro bằng URL. Hãy xem this article và sử dụng cách tiếp cận tương tự.

Ngẫu nhiên, tôi đang sử dụng phương thức ghi nhật ký từ bài viết này trong tất cả các ứng dụng của mình - nó hoạt động như một sự quyến rũ, tôi thực sự khuyên bạn nên sử dụng nó!

+0

Cách tiếp cận này là một chút khéo léo. Như bạn có thể kiểm tra các ý kiến ​​của bài viết cho bài viết, một số người đã có vấn đề với nó. Và bạn cũng cần xác định cờ biên dịch, khi bạn có thể gắn cờ/số nhận dạng mặc định mà SDK/GCC đã triển khai ('__OPTIMIZE__', '__DEBUG__' hoặc bất kỳ thứ gì) – vfn

+0

Tôi đã làm việc đó - nhưng tôi đoán bởi vì bạn phải thiết lập này cho mỗi dự án bạn bắt đầu với, nó sẽ là một rắc rối trong dài và thậm chí có thể chạy ngắn. Điều này nên được thiết lập trong môi trường XCode hoặc trình biên dịch IMO. – Jonny

1

Bạn có thể định nghĩa các macro trước proccessor trong xcode bằng cách chỉnh sửa cài đặt ngôn ngữ gcc:

Vào menu Project và chọn "Edit Settings Dự án". Chuyển đến tab "Xây dựng".

Chuyển đến phần có nhãn "GCC 4.0 - Ngôn ngữ". Có một cài đặt có tên là "Cờ C Khác". Thêm tất cả các macro "-Dthing" bạn muốn ở đó.

5

Đặt mã này vào nơi bạn cần sử dụng cấu hình dựa trên chế độ (debug/release) = (phát triển/sản xuất).

Nơi tốt nhất để đặt nó nằm trên tệp "ProjectName" _Prefix.pch.

#ifndef __OPTIMIZE__ // __OPTIMIZE__ is not enabled, it means that the active config is Debug, so here you have to put your code for development mode 

// For example 
#define SERVER_URL @"http://my.test.server/something" 

#else //__OPTIMIZE__ is defined, so put here your production code 

// For example 
#define SERVER_URL @"http://my.production.server/something" 

#endif // __OPTIMIZE__

Chúc mừng,
VFN

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