我正在創建一個iPhone應用程序,同時學習OOP。我有兩個名爲GUTimer和GUInterval的類。每個實例都需要歸檔到plist,並在需要時單獨解除存檔。 我的問題是,我應該創建一個管理這些對象類型的加載和保存的管理器類。還是應該創建單獨的類,一個管理GUTimer實例的保存和加載,另一個管理GUInterval實例的保存和加載? 我還在學習面向對象,這是我的分級項目,所以我只想提出可能的最佳解決方案。任何幫助,將不勝感激。 謝謝。用於從文件創建一組對象的單獨的類?
0
A
回答
1
我會對你的對象實施NSCoding協議,然後用這樣的存檔/取消存檔即可:
+ (NSObject *)readArchiveFile:(NSString *)inFileName
{
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectoryPath, inFileName];
NSObject *returnObject = nil;
if([fileMgr fileExistsAtPath:filePath])
{
returnObject = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
}
return returnObject;
}
+ (void)archiveFile:(NSString *)inFileName inObject:(NSObject *)inObject
{
NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectoryPath, inFileName];
BOOL didSucceed = [NSKeyedArchiver archiveRootObject:inObject toFile:filePath];
if(!didSucceed)
{
NSLog(@"File %@ write operation %@", inFileName, didSucceed ? @"success" : @"error");
}
}
+ (void)deleteFile:(NSString *)inFileName
{
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectoryPath, inFileName];
NSError *error;
if ([fileMgr fileExistsAtPath:filePath] && [fileMgr removeItemAtPath:filePath error:&error] != YES)
{
NSLog(@"Unable to delete file: %@", [error localizedDescription]);
}
}
0
這個問題並沒有真正的答案。如果你正在學習面向對象,那麼你很快就會明白這一點。我可以給出的最好的建議是將你的對象分解成功能區域和大小。爲了可讀性,你想避免巨大的類,但除此之外,它基本上取決於你自己的偏好。如果你能證明一個特定的設計決定,那麼它可能適合你。
相關問題
- 1. 從單獨的類對象中創建新類對象的實例
- 2. 調用一個單獨的.js文件中的JavaScript對象類
- 3. 關於創建一個類的對象
- 4. 從txt文件行創建類對象
- 5. 基於屬性的單獨對象組
- 6. 創建單獨的對象與循環
- 7. 爲單獨的一組用戶創建單獨的表格
- 8. 從wsdl的每個類創建單獨的文件?
- 9. 使用從xml文檔讀取的對象數組創建類
- 10. 創建類的對象從一個文件中,沒有重複的對象
- 11. Python使用多個文件從一個類創建對象
- 12. 如何從單獨的文件夾導入多個類對象?
- 13. 從對象數組創建一個對象引用父對象
- 14. 創建類似於從多個對象.ctors列表文件
- 15. 從一個單獨的類調用對象的setter方法
- 16. 用Perl創建簡單的類/對象?
- 17. 從一個單獨的類更改表單對象的屬性
- 18. 創建一個從出口組件的新對象使用bowserify
- 19. Javascript,從對象數組創建表單
- 20. 創建一個PHP文件單獨
- 21. 創建數組類對象
- 22. 從ASPX頁面創建一個單獨的文件
- 23. 發送/創建一個對象到/在一個單獨的Java類中
- 24. KnockoutJS訪問一個單獨的類中的對象數組
- 25. 創建I類對象數組創建
- 26. 從單獨的文件構建一個PHP數組
- 27. 從json數組創建一個強類型的對象
- 28. 從python的2D數組類中創建一個對象
- 29. 用單一形式創建多個對象(類似的類型)
- 30. 創建從一個單獨的線程
我覺得閱讀和寫作應該在GUTimer和GUInterval,無需進行額外的課程,因爲所有這些都是模型的一部分。 –