2013-11-04 87 views
0

問題是使用或不使用CoreData與Reskit,這是因爲我不知道使用此功能有什麼好處,或者在什麼情況下建議使用它。CoreData or Not with Restkit

這個問題是因爲我有一個應用程序與CoreData(舊開發人員做了這項工作),我覺得它消耗了大量的資源,並使應用程序變得緩慢。

我有一個新聞源所以這裏的數據總是在變化,所以我不需要堅持我認爲的數據?但我有一些像我的個人資料圖片和喜好,我想本地存儲的對象。

* UPDATE *

它定義了 「持久性」(我認爲)

NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; 
    RKObjectManager* man = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:BASE_URL]]; 
    man.requestSerializationMIMEType = RKMIMETypeJSON; 
    [RKObjectManager setSharedManager:man]; 

    [AFNetworkActivityIndicatorManager sharedManager].enabled = YES; 

    RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; 
    man.managedObjectStore = managedObjectStore; 

    //configuring Mappings 
    /**some mappings**/ 

    [managedObjectStore createPersistentStoreCoordinator]; 
    NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Database.sqlite"]; 
    NSError *error; 
    NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; 
    NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error); 

    // Create the managed object contexts 
    [managedObjectStore createManagedObjectContexts]; 

    // Configure a managed object cache to ensure we do not create duplicate objects 
    managedObjectStore.managedObjectCache = managedObjectStore.managedObjectCache; 
+1

您的性能問題是什麼,爲什麼您認爲Core Data會導致這些問題?它實際上是相當快速和優化的,並且在大多數情況下會比直接使用SQLite存儲更好的結果(並且更易於使用)。您的存儲需求到底是什麼?您還考慮了什麼?如果你根本不需要堅持數據,那麼一定不要!否則,這個問題應該是「核心數據的替代方案更適合於這個問題?」 –

+0

@ReidBelton有時需要很多時間映射我認爲?或者將東西保存在本地數據庫中,但我只是想了解它。也許我誤解了一些東西,我認爲它是CoreData?但我知道它使用SQLite(請參閱更新)。與此同時,我只需要存儲一些用戶的偏好和一些數據(如頭像,生物和應用程序配置)...我認爲這個問題是「錯誤的」,但我無法表達另一個 – FxckDead

+0

核心數據是非常有效的並且非常容易使用。在我看來,沒有理由不使用Core Data ......關於我最近在iOS上使用SQLite的唯一時間是當我需要全文搜索時。如果你的核心數據存在性能問題,問題出在你的設計上,而SQLite不會解決這個問題。如果你沒有問題...嗯,你沒有問題:) –

回答

1

使用核心數據的代碼。另請參閱使用提取的結果控制器(管理從數據存儲區批量加載數據頁)。這對於新聞源應用程序來說非常合適,您可能會有相當多的訂閱源項目,但其中很少會在任何時候顯示(因此您不需要它們在內存中)。要使用原始SQLite或磁盤上的文件中的數據自己管理這個功能將會更有效,並且性能可能會更差。

+0

但數據僅用於「緩存」或它的permament? – FxckDead

+0

?核心數據可以根據你如何配置它來完成。當使用RestKit時,它將創建一個永久(永久)存儲。 – Wain