Bir uygulamada RestKit kullanıyorum ve mappers'ı yapılandırdım ve iyi çalışıyor. Önbellek için CoreData'ya ve bir tablo görünümünde çekirdek veri modellerini görüntülemek için her zamanki fecthController'a karar verdik. Uygulamamın ekranı üç sekmeli bir UITabViewController. Her sekmede farklı varlıklardaki farklı bilgilere sahibim, sekmeler ve tüm işler arasında geçiş yapabilirim. Sorun, bir sekmede arama yaptığımda, diğer sekmelerdeki verileri kaybettim. Sorunu derinden kazdım ve aşağıdakileri gördüm: bir şey ararken diğer varlıklarımı siliyorum !! Farklı bağlamlar ve çekirdek verilerle ilgili bazı şeyler yaratmaya çalıştım ama hiçbir şey işe yaramıyor.RestKit CoreData nesnelerini koru
// Configuration stuff
let objectManager: RKObjectManager = RKObjectManager(baseURL: baseURL);
let managedObjectModel: NSManagedObjectModel = NSManagedObjectModel(contentsOfURL: modelURL!)!;
let managedObjectStore: RKManagedObjectStore = RKManagedObjectStore(managedObjectModel: managedObjectModel);
objectManager.managedObjectStore = managedObjectStore;
managedObjectStore.createPersistentStoreCoordinator();
do {
try managedObjectStore.addSQLitePersistentStoreAtPath(storePath, fromSeedDatabaseAtPath: seedPath, withConfiguration: nil, options: nil);
} catch let err as NSError {
fatalError()
}
// Create the managed object contexts
managedObjectStore.createManagedObjectContexts();
managedObjectStore.managedObjectCache = RKInMemoryManagedObjectCache(managedObjectContext: managedObjectStore.persistentStoreManagedObjectContext)
// Mapping
let entityMapping: RKEntityMapping = RKEntityMapping(
forEntityForName: "Entity",
inManagedObjectStore: RKObjectManager.sharedManager().managedObjectStore
);
entityMapping.identificationAttributes = ["id"];
entityMapping.addAttributeMappingsFromArray([
"id", "firstName", "lastName", "birthdate"
]);
//Get Data from server
class Datalist{
class fun fetchData(successClosure:[Entity]->Void,failure:String->Void){
RKObjectManager.sharedManager().getObjectsAtPath(
path,
parameters: nil,
success: {
(operation: RKObjectRequestOperation!, result: RKMappingResult!) -> Void in
dispatch_async(dispatch_get_main_queue(), {
() -> Void in
successClosure(result.array());
});
},
failure: {
(operation: RKObjectRequestOperation!, error: NSError!) -> Void in
dispatch_async(dispatch_get_main_queue(), {
() -> Void in
failureClosure();
});
}
);
}
}
}
//Show data
class ListViewController:NSFetchedResultsControllerDelegate{
private var fetchedResultsController: NSFetchedResultsController!;
override func viewDidLoad() {
super.viewDidLoad();
fetchedResultsController = NSFetchedResultsController(
fetchRequest: fetchRequest, managedObjectContext: RKManagedObjectStore.defaultStore().mainQueueManagedObjectContext,
sectionNameKeyPath: "formatted",
cacheName: nil)
fetchedResultsController?.delegate = self
getData()
}
private func getData(){
DataList.fetchData({data in
let ids = getEntitiesId(data)
fetchedResultsController.fetchRequest.predicate = createPredicateFromIds(ids)
try! self.fetchedResultsController?.performFetch()
},failure:{message in
showMessage(message)
})
}
func createPredicateFromIds(entityIds: [Int]) -> NSPredicate {
let predicate: NSPredicate = NSPredicate(format: "id IN $ENTITYIDS").predicateWithSubstitutionVariables(["ENTITYIDS" : entityIds]);
return predicate;
}
}
bazı kod göstermek ve test dair ayrıntıları ve ne aslında – Wain
kaybolur bkz Ben bir örnek sağlanan vermek gerekir! Teşekkür ederiz @Wain – ocelot
Peki ne veri listesi ve yüklemi ile kullanmakta olduğunuz kimlikler nelerdir? Bu yüklem, her şeyi hariç tutuyor mu? – Wain