2012-05-15 2 views
0

내가 가지고 noteapp, 두 페이지 :문제가 격리 된 저장소에 여러 항목을 저장하는 데

  1. 에서 MainPage.xaml - 노트의 창조;
  2. NoteList.xaml - 메모 목록입니다.

메모는 IsolatedStorage를 통해 저장되며 NoteList.xaml (목록 상자)에 표시되지만 같은 이름의 메모는 저장되지 않으므로 수정하는 방법은 무엇입니까? 이름이 같지만 내용이 다른 노트를 추가 할 수 있어야합니다.

감사합니다.

+0

같은 이름의 메모가 저장되지 않는다는 것은 무엇을 의미합니까? 또한 관련 코드를 게시 할 수도 있습니다 (저장 및 검색 가능). – Prescott

답변

1

메모 이름을 파일 이름으로 사용하고 있습니까? 그렇다면 ... 그렇게하지 마십시오. 각 파일을 고유 한 이름으로 저장하십시오. 이 일을하는 무수한 방법이 있습니다. GUID 또는 타임 스탬프를 사용하거나 파일 이름 끝에 타임 스탬프를 추가 할 수 있습니다. 그렇게 생각한다면 모든 노트를 단일 형식의 파일, 아마도 XML로 저장할 수 있습니다.

A : 당신이 필요로하는 무엇

0

고유하게 사용하지 않고 각 음을 확인하는 방법입니다. 메모 이름

b. 노트의 내용

시간 스탬프를 사용하는 것이 현재 응용 프로그램에 적합 할 수 있지만 (사용자가 서로 다른 두 노트를 동시에 만들 수는 없기 때문에), 타임 스탬프를 사용하여 각 노트를 식별하면 원하는 경우 줄 아래로 문제가 발생할 수 있습니다. 구현 말하기 ... 응용 프로그램에 서버 측 구성 요소. 첫 번째 달에 수백만 달러를 판매하는 애플리케이션 23 버전에서 사용자가 메모에 공동 작업하도록 허용하고 EXACT에서 만든 앱의 두 인스턴스간에 메모를 공유하면 어떻게됩니까? 같은 시간? 너는 문제가있을거야.

Guid.NewGuid 메서드를 사용하여 응용 프로그램의 각 노트에 대한 고유 식별자를 찾는 합리적인 해결책이 있습니다. 사용자가 메모를 "저장"하기로 결정한 경우 (또는 작성된 순간 메모를 저장하거나 일정 "초안"을 허용하도록 설정 한 경우)

응용 프로그램에서 사용자가 작성할 수 있도록 각 메모를 고유하게 식별하는 방법을 결정하면 데이터를 저장하는 방법을 고려해야합니다.

이렇게하는 가장 좋은 방법은 XmlSerializer을 사용하는 것입니다. 제 3 자 라이브러리 Json.Net을 사용합니다.하지만 간단하게하기 위해 좀 더 쉽게 작업 할 것을 권합니다.

더 간단한 방법 (좋은 '일반 텍스트 사용)은 th 일 것입니다. 전자 다음

1 : {Note.Name}
2 : {Guid.ToString()}
3 : {Note.Contents}
4 : {Some delimiter} 당신이 IsolatedStorage에서 파일을 읽고

, 당신은 라인으로 파일 라인을 통해 읽을 것, 각각의 고려 파일의 시작과 각 {Some delimiter} 사이의 줄을 "청크 (chunk)"하고 파일의 끝을 하나의 "참고"의 데이터로 만듭니다.

이 형식에는 몇 가지 제한 사항이 있습니다.주로, 사용자는 메모 내용의 마지막 부분을 {Some delimiter} (임의로 btw를 자유롭게 정의 할 수 있음)과 동일하게 유지해야합니다. 이를 위해 "## & & ENDOFNOTE & & ##"과 같이 사용자가 입력 할 가능성이없는 문자열을 사용하는 것이 유용 할 수 있습니다. 사용자가이를 입력하는 방법과 관계없이 파일 형식을 손상시킬 수 있으므로 NoteStore에이 문자열이 포함되어 있지 않음을 IsolatedStorage에 저장하기 전에 확인해야합니다.

간단한 해결 방법을 원한다면 위의 방법을 사용하십시오. 확장 성이 좋은 솔루션을 원하면 JSON 또는 XML을 사용하고 이해할 수있는 파일 형식을 찾아야합니다. JSON을 살펴 보는 것이 좋습니다. 가치는이 격리 된 시나리오보다 훨씬 더 많이 도달합니다.

0

필자는 IsolatedStorage에 메모를 쓸 필요가있었습니다. 내가 한 일은 그들에게 한 파일에 대한 것이 었습니다. IsolatedStorageFile 필기 기록을 작성한 날짜를 적고 메모합니다. 목록 상자에서 나는 두 개의 배열에 저장합니다. 그런 다음 앱을 종료하기 전에 파일에 기록하십시오.

  try 
      { 
       using (IsolatedStorageFile storagefile = IsolatedStorageFile.GetUserStoreForApplication()) 
       { 
        if (storagefile.FileExists("NotesFile")) 
        { 
         using (IsolatedStorageFileStream fileStream = storagefile.OpenFile("NotesFile", FileMode.Open, FileAccess.ReadWrite)) 
         { 
          StreamWriter writer = new StreamWriter(fileStream); 

          for (int i = 0; i < m_noteCount; i++) 
          { 
           //writer.Write(m_arrNoteDate[i].ToShortDateString()); 
           writer.Write(m_arrNoteDate[i].ToString("d", CultureInfo.InvariantCulture)); 
           writer.Write(" "); 
           writer.Write(m_arrNoteString[i]); 
           writer.WriteLine("~`"); 
          } 
          writer.Close(); 
         } 
        } 
관련 문제