Tôi biết câu hỏi này đã được hỏi vài lần, nhưng tôi hơi khác một chút. Trước khi đóng tài khoản này là trùng lặp, vui lòng đọc kỹ. Có rất nhiều bài viết trên ngăn xếp tràn mà nói, "Cá nhân, tôi ghét MACROS, Đừng sử dụng shit". Tôi đã đọc tất cả những điều đó và trường hợp của tôi khác. Tôi đang cố gắng xác định URL được sử dụng trong phần mềm (ứng dụng iOS) bằng cách sử dụng # macro xác định.#define hoặc const string *
Tôi đồng ý rằng việc sử dụng chuỗi ký tự là một phương pháp hay hơn # macro xác định. Nhưng trong thế giới API dựa trên REST ngày càng chấp nhận các tham số truy vấn như một phần của URL, làm thế nào bạn vẫn có thể sử dụng các chuỗi const để biểu diễn một URL thay đổi?
Thay vì http://api.myblog.com/posts?entryid=%@ Server API mà nguyên tắc REST sau đây sẽ có http://api.blog.com/posts/entries/[entryid]
Trong kiểu cũ, URL là http://api.myblog.com/posts cho tất cả các mục và họ không thay đổi. Một chuỗi const là có thể.
Trong loại sau, thay đổi URL với mỗi mục nhập và tôi sử dụng Macro mở rộng đến URL đầy đủ như thế này.
#define GET_ENTRY_URL(__MY_ENTRY_ID__) [NSString stringWithFormat:@"http://api.myblog.com/posts/entries/%@", __MY_ENTRY_ID__];
Có lỗi thiết kế nào trong phương pháp của tôi không? Muốn biết thông tin đầu vào của bạn.
Cảm ơn.
Làm thế nào để bạn vượt qua biến trong nsstrings const tĩnh? – Mugunth
bạn biết bạn không thể, vì nó là một hằng số. imho, nếu api trở nên phức tạp hơn, tôi sẽ xây dựng lớp như một NSURL, xây dựng url có thể được thực hiện bên trong. có lẽ nó không phải là quan trọng chưa sử dụng vĩ mô hay không, nhưng khi đoạn mã này được nhiều nơi, mọi thứ có thể cảm thấy sai một lần nữa. ví dụ: chia tất cả GET_ENTRY_URL (x) thành hai GET_CODING_ENTRY_URL (x), GET_PERSONAL_ENTRY_URL (x). – alvinsj