2014-09-19 25 views
7

Trong Xcode 6: NSUserDefaults không hoạt động trong thiết bị mô phỏng (iPhone 5, iPhone 6, vv, mô phỏng).Xcode 6 NSUserDefaults KHÔNG làm việc

Nếu bạn thử nghiệm trên các thiết bị thực, nó hoạt động hoàn hảo. Ai đó biết cách gửi thông tin này cho Apple? Tôi đã cố gắng liên lạc với Apple, nhưng tôi chưa nhận được câu trả lời.

Tôi không thể thử nghiệm trên iPhone6 ​​thực hoặc iPhone6 ​​Plus vì ở quốc gia của tôi chưa có sẵn.

Mã của tôi (là một ví dụ) mà hoạt động hoàn hảo trên các thiết bị:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

NSString *appTheme = [defaults objectForKey:@"theme_preference"]; 

if ([appTheme isEqualToString:@"color0"]) { 

} else { 

} 

Có lẽ, tôi đã không thể hiện bản thân mình rõ ràng.

Người dùng, trong "Cài đặt iPad trên iPhone" phải thay đổi thông số cài đặt của ứng dụng.

Cài đặt được thực thi bởi "Root.plist" của "Settings.bundle".

Tức là, tôi cố gắng kiểm tra người dùng thay đổi các thông số của ứng dụng. Nhưng trong mã nguồn tôi không thấy những thay đổi này. tôi nói luôn các thiết bị mô phỏng (Xcode6)

App Settings

+0

Chạy phiên bản iOS nào? – trojanfoe

+2

Tôi đang gặp sự cố tương tự với 'NSUserDefaults'. Tôi nghĩ rằng nó chỉ bị hỏng trong phiên bản hiện tại: Phiên bản 6.0.1 (6A317). Có lẽ bản phát hành tiếp theo sẽ khắc phục điều này? Tôi cũng mong là như vậy. – siannopollo

+0

Phiên bản giả lập của tôi là v8.0 (550.1) và phiên bản này không hoạt động chính xác - như được mô tả ở trên. –

Trả lời

2

Hôm nay tôi cuối cùng đã khắc phục được sự cố. Tôi đã cài đặt bản cập nhật mới nhất của Xcode (Phiên bản 6.1) và sau đó tôi đã đặt lại trình mô phỏng.

Sau đó, tôi đã truy cập vào cài đặt của mình Ứng dụng. Cho đến khi bạn mở cài đặt của ứng dụng, cài đặt sẽ không được sao chép trong trình mô phỏng (hoặc thiết bị thực)

Quyền truy cập bắt buộc ít nhất một lần vào cài đặt Ứng dụng của bạn.

0

Cố gắng để lưu dữ liệu như thế này:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:@"color0" forKey:@"theme_preference"]; 
[defaults synchronize]; 

Và sau đó gọi nó sau này:

NSString *appTheme = [defaults objectForKey:@"theme_preference"]; 
if ([appTheme isEqualToString:@"color0"]) { 

} else { 

} 
+0

Tôi cố gắng kiểm tra người dùng thay đổi các thông số của ứng dụng. Nhưng trong mã nguồn tôi không thấy những thay đổi này. Tôi luôn nói về các thiết bị mô phỏng (Xcode6) – Markus

+0

Nó không chính xác. Nếu tham số mặc định của bạn là một số nguyên (ví dụ), bạn phải gọi nó là: [mặc định integerForKey: @ "strokeSize_preference"]; Nó không đúng: objectForKey – Markus

0

Đây là một vấn đề phổ biến hiện nay với xCode6 và ios8.

Điều tôi thấy là Đặt lại nội dung và cài đặt của trình mô phỏng bất cứ khi nào bạn gặp vấn đề về NSUserDefaults này.

khi tôi xóa ứng dụng khỏi trình mô phỏng, giá trị của các giá trị mặc định sẽ không bị xóa.

Sau đó, tôi Đặt lại trình mô phỏng và nó hoạt động tốt cho tôi.

Vì vậy, cho đến bây giờ cho đến khi táo đưa ra cách khắc phục cho điều này, cách tốt nhất để thử nghiệm trên trình mô phỏng là đặt lại trình mô phỏng bất cứ khi nào bạn muốn xóa ứng dụng.

Nó làm việc cho tôi. Hy vọng nó cũng giúp người khác.

0

Đó là lỗi của trình mô phỏng iOS, bạn nên chuyển đến Trình mô phỏng iOS> Đặt lại nội dung và cài đặt để đặt lại thiết bị.

+0

Trong trường hợp của tôi: Không có công việc. Vấn đề vẫn tồn tại. – Markus

0

Đi tới trình mô phỏng iOS trong menu và sau đó nhấp vào đặt lại cài đặt nội dung, bây giờ vấn đề của bạn sẽ được giải quyết.

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