2014-09-29 44 views
0

的光陣列的最佳實踐我正在構建一個非常基本的郵件模板管理器,以便在編寫具有相同主題/正文的多個電子郵件時節省我的用戶一些時間。在我的應用程序中存儲來自tableview

我有幾個桌面,用戶可以從應用程序中提供的示例中選擇模板或添加/編輯自己的模板。

郵件模板有3個領域:

  • 模板名稱(文本框)
  • 電子郵件主題(文本字段)
  • 電子郵件正文(的TextView)
  • 模板是默認值(BOOL)

  • 未來我可能會實現附加文件(或引用它)的功能。

現在應用程序中的示例是硬編碼的,但是如何在手機上存儲用戶添加的模板?

將模板設置爲「默認」我正在考慮將它添加到userDefaults,它是正確的嗎? 要在手機上保存用戶模板,是否必須使用Core Data?還是有最簡單的方法呢?

如果核心數據是要走的路,是否有人有鏈接到一個很好的教程?

非常感謝。

回答

0

在我看來,個人核心數據對於你所追求的東西來說是過火。您可以將其添加到NSDictionary,並將NSDictionary存儲在NSUserDefaults中,就像您已經考慮的那樣。你可以有像

********WARNING THIS CODE IS UNTESTED******** 
// Probably best to rename this method something better but you get the idea 
- (void)addTemplateWithSubject:(NSString *)subject Body:(NSString *)body forName:(NSString *)name shouldUseAsDefault:(BOOL)default 
{ 
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    /* We want to retrieve ALL existing email template so we can check if 
    * our name already exists and if we have default already 
    */ 
    NSMutableDictionary *existingEmailTemplates = [userDefaults dictionaryForKey:@"EmailTemplates"]; 

    // Now we have all our email templates lets see if one exists already 
    if (![[existingEmailTemplates allKeys] containsObject:name]) { 
     // If name doesn't exist lets start adding our new template 
     NSMutableDictionary *emailTemplate = [[NSMutableDictionary alloc] init]; 
     [emailTemplate addObject:subject forKey:@"subject"]; 
     [emailTemplate addObject:body forKey:@"body"]; 
     [emailTemplate addObject:name forKey:@"name"]; 
     // and anything else you which to add here 

     // Add our new template to the rest of the templates 
     [existingEmailTemplates addObject:emailTemplate forKey:name]; 

     // Now store our existing templates back into our NSUserDefaults 
     [userDefaults setObject:existingEmailTemplates forKey:@"EmailTemplates"]; 
     [userDefaults synchronize]; 
    } else { 
     // Oops our name already exists 
     // Just fill this alert view to warn the user that it already exists 
     UIAlertView *templateAlreadyExistsAlert = [[UIAlertView alloc] initWithTitle:@"Warning!".....]; 
     /* 
     * You may at this point want to offer the user to delete the old template 
     * in favor of this new one. That isn't covered here if you do want it covered 
     * just ask and I'll update. 
     */ 
    } 
} 
+0

感謝您的幫助@Popeye。我試圖實現這一點,並將其適應於我的代碼,但我遇到了一些或錯誤:xcode說「emailTemplate」不能是MutableDictionary。此外,我認爲addObject的關鍵似乎沒有工作,也許是setValue forkey? – DavideC 2014-09-29 14:33:24

+0

請分享錯誤。正如答案中指出的那樣,它沒有經過測試,所以我期望有一些。 – Popeye 2014-09-29 14:34:03

+0

我編輯了我以前的評論 – DavideC 2014-09-29 14:43:38

相關問題