2009-09-15 11 views
5

Tôi quan tâm đến việc sử dụng các phím SBUsesNetworkUIRequiresPersistentWiFi trong ứng dụng của mình; tuy nhiên, tôi chỉ muốn kích hoạt chúng khi sử dụng một bộ điều khiển xem nhất định. Có cách nào để lập trình lật các giá trị khóa đó trong khi ứng dụng đang chạy không?Tôi có thể lật các giá trị Info.plist theo cách lập trình trong khi ứng dụng của tôi đang chạy không?

Trả lời

6

Bạn không thể sửa đổi nội dung gói trong khi đang chạy, bạn không có quyền ghi vào thư mục đó. Tôi không chắc chắn có một cách để làm chính xác những gì bạn muốn.

3

Tôi biết bạn có thể nhận info.plist của bạn như một NSDictionary qua NSBundle như sau:

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary]; 

từ đó bạn có thể làm một mutableCopy của NSDictionary và thiết lập các giá trị đó. Khi thực hiện truy vấn cho các khóa, bạn sẽ phải đảm bảo truy vấn NSDictionary chứ không phải tệp info.plist của bạn, nhưng không khó để gói gọn tất cả điều này vào một lớp xử lý cả hai vấn đề cho bạn.

Để sửa đổi tệp info.plist của ứng dụng trực tiếp, có thể có vấn đề ở đó (ví dụ: nếu bạn sửa đổi tệp, mã ký sẽ không thành công và ứng dụng của bạn bị coi là bị hỏng), mặc dù tôi không chắc chắn về điều này.

+0

Phím 'UIRequiresPersistentWiFi' dường như móc vào một số mã' UIApplication' lớn hơn mà tôi không thể hoặc không biết cách truy cập, hiển thị hộp thoại WiFi khi cần kết nối mạng. Do đó, việc tạo một bản sao của các tùy chọn bó có thể không đưa tôi đi xa trong trường hợp cụ thể này, mặc dù điều này có thể áp dụng cho các khóa khác, nếu hành vi của chúng có thể bị quá tải. –

+0

Bạn sẽ không thể thay đổi info.plist của mình hoặc bất kỳ tệp nào trong danh sách chính của bạn. – mahboudz

0

Bạn không thể sửa đổi Info.plist. Có vẻ như không phải là một cách xử phạt của Apple để làm những gì bạn đang làm.

0

Tôi không nghĩ rằng điều này sẽ hoạt động. [NSBundle mainBundle] có một con trỏ tới một thông tin cụ thểDictionary. Mặc dù bạn có một bản sao có thể thay đổi được, NSBundle sẽ không biết gì về plist mới của chúng tôi. Có ai thử chưa?

0

Info.plist không là gì ngoài từ điển. Do đó nó có thể được chỉnh sửa.