2011-08-03 6 views
5

Tôi đang cố gắng lưu hai Danh sách các đối tượng trong PhoneSettings trên điện thoại, nhưng tôi bị kẹt ở một vấn đề lạ (Nhưng có lẽ tôi đang mắc lỗi ngớ ngẩn ở đâu đó).ApplicationSettings không được lưu đúng cách

Nếu tôi chỉ lưu một trong các danh sách, nó hoạt động như được cho phép - Nó sẽ lưu và tải lại khi ứng dụng được khởi chạy vào lần tiếp theo. Nhưng nếu tôi cố gắng lưu 2 danh sách, không có danh sách nào trong số đó được lưu chính xác. Không có lỗi hoặc bất cứ điều gì, chỉ cần "trống".

Xem mã bên dưới.

//My save method 
public void Gem() 
     { 
      var settings = IsolatedStorageSettings.ApplicationSettings; 

      if (settings.Contains(INDTASTNINGER_LIST)) 
      { 
       settings[INDTASTNINGER_LIST] = _indtastningsListe; 
      } 
      else 
       settings.Add(INDTASTNINGER_LIST, _indtastningsListe); 

      if (settings.Contains(INDTASTNINGER_LIST2)) 
      { 
       settings[INDTASTNINGER_LIST2] = _indtastningsListe2; 
      } 
      else 
       settings.Add(INDTASTNINGER_LIST2, _indtastningsListe2); 
      settings.Save(); 
     } 

     //Constructor supposed to load settings 
     public Indtastninger() 
     { 
      var settings = IsolatedStorageSettings.ApplicationSettings; 

      if (settings.Contains(INDTASTNINGER_LIST)) 
      { 
       _indtastningsListe = null; 
       _indtastningsListe = (List<Indtastning>)settings[INDTASTNINGER_LIST]; 
      } 
      if (settings.Contains(INDTASTNINGER_LIST2)) 
      { 
       _indtastningsListe2 = null; 
       _indtastningsListe2 = (List<Indtastning>)settings[INDTASTNINGER_LIST2]; 
      } 
     } 

Tôi đang làm gì sai? Nếu tôi nhận xét phần có nội dung "list2", nội dung đầu tiên sẽ được lưu/truy xuất hoàn hảo.

+0

Và có lẽ tôi nên thêm rằng nó không tạo ra sự khác biệt nào trong danh sách tôi nhận xét. Vẫn thành công với một, nhưng với hai, không có gì được lưu/lấy ra. –

+0

Bạn đang sử dụng phiên bản SDK nào? Tôi dường như không thể lặp lại điều này trên RC. –

+0

Điều gì xảy ra nếu bạn thêm 'settings.Save()' vào giữa. Nó có thể là serialization của danh sách thứ hai là phá vỡ và không gọi là 'save()' –

Trả lời

2

Tôi đã phải đối mặt với cùng một vấn đề một thời gian trước đây, vấn đề là bạn chỉ có thể lưu trên các đối tượng IsolatedStorage là các serializable XML.

nếu bạn lưu đối tượng khác, nó sẽ hoạt động ngay cả với trình gỡ lỗi nhưng khi ứng dụng được khởi động lại, tất cả dữ liệu đã lưu sẽ bị mất.