2013-05-06 47 views
0

我首先是新手,並且是iOS開發新手。我已經完成了iTunes上的CS193P課程,並準備好解決我的第一個正確的應用程序。我設置了原型,只需要一些參考指針就可以開始(需要這種信心)。創建應用程序的起始點,允許用戶將項目添加到兩個單獨的列表中

該應用程序的前提是允許用戶將條目添加到2個可用列表中的1個;無論是給予還是接收名單。這些條目將包括「事件名稱」,「名稱」,「日期」等內容。當然,用戶還可以選擇列表並查看條目;我想讓用戶選擇是否按名稱,日期或事件進行搜索。

我已經完成了原型設置,我只是想知道這種應用程序是否會有點類似於通訊簿?用戶可以添加人的姓名(或從聯繫人中選擇姓名)等。

道歉爲我們這裏突出的基本問題,但沒有人有任何良好的參考點本質上,創建一個entires列表獲得附加到特定列表。我熟悉模態視圖控制器和代表;我基本上想知道我應該用什麼來「存儲」用戶添加的內容。我應該使用核心數據還是其他技術等?

謝謝! Amit

回答

0

是的,你必須使用核心數據來存儲條目。否則,無論何時用戶重新打開應用程序,所有條目都將消失。

+0

感謝您的回覆,這很合理! – amitsbajaj 2013-05-09 07:53:51

0

我一直在使用NSKeyedArchivers來存儲列表。 http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSKeyedArchiver_Class/Reference/Reference.html

非常容易管理,它可以輕鬆地存儲,保存和檢索所有數據。

示例將是對象的列表(NSMutableArray)。每個對象都實現NSCoding並具有initWithCoder:和encodeWithCoder:函數。

例如(假設對象有一個名字和日期屬性)

- (id) initWithCoder:(NSCoder *){ 
    self = [super init]; 
    if (self){ 
     [self setName:[aDecoder decodeObjectForKey:@"name"]]; 
     [self setDate:[aDecoder decodeObjectForKey:@"date"]]; 
    } 
    return self; 
} 
- (void) encodeWithCoder:(NSCoder *)aCoder{ 
    [aCoder encodeObject:name forKey:@"name"]; 
    [aCoder encodeObject:date forKey:@"date"]; 
} 

然後,你可以簡單地讓您的NSMutableArray,您就可以添加這些對象,通過一些東西,具有以下功能進行管理,只需要調用的SaveChanges:

- (NSString *) itemArchivePath{ 
    NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES); 
    NSString *documentDirectory = [documentDirectories objectAtIndex:0]; 
    return [documentDirectory stringByAppendingPathComponent:@"myArchiveName.archive"]; 
} 
- (BOOL) saveChanges{ 
    NSString *path = [self itemArchivePath]; 
    return [NSKeyedArchiver archiveRootObject:myList toFile:path]; 
} 

執行這兩個函數後,您可以調用saveChanges。

,並檢索列表中的下一個啓動後後,在經理的init:

- (id) init{ 
    self = [super init]; 
    if (self){ 
     NSString *path = [self itemArchivePath]; 
     myList = [NSKeyedUnarchiver unarchiveObjectWithFile:path]; 
     // If the array hadn't been saved previously, create a new empty one 
     if (!myList){ 
      myList = [[NSMutableArray Alloc] init]; 
     } 
    } 
} 
+0

感謝Doc的回答。這確實有幫助,雖然我聽說過NSKeyedArchivers,但我沒有深入,但看看你的代碼,看起來並不難。我正在覈心數據之間進行權衡,但非常感謝您的回答。我一定會對此進行調查。 – amitsbajaj 2013-05-09 07:56:53

0

你提的問題是非常普遍的,所以這是我一般的回答:我會建議使用核心數據存儲列表和一個NSFetchedResultsController來顯示它們。我還建議你看看免費的Sensible TableView框架,我經常使用它來自動執行與你手頭上的任務非常相似的任務。

+0

謝謝馬特 - 這非常有幫助,我確實會看看這個框架。我對一般問題表示歉意 - 它仍然在我的腦海中形成,但很高興知道Core Data是要走的路,NSFetchedResultsController將成爲檢索它的方式。 – amitsbajaj 2013-05-09 07:54:59

相關問題