quattro_4 scribble

scribble 落書き (調べた事をただ落書きする)

MotionInMotion Episode 17 - RestKit

RestKit - MotionInMotion

RestKitを使ってTaskアプリのCRUD

  • RestKit
    • little code
  • continue task app
  • サーバーサイドrails app
  • rake pod:install
    • pod 'RestKit'
    • pod 'SVProgressHUD'
      • AFNetworking (1.3.3)
      • RestKit (0.22.0)
  • RemoteManager
    • class << self
      • include CDQ
      • setup
        • RKObjectManager.sharedManager = manager
  • manager (singleton)
    • Dispatch.once do
    • @manager = RKObjectManager.managerWithBaseURL(NSURL.URLWithString('http://cryptic-everglades-8921.herokuapp.com/'))
    • @manager.managedObjectStore = store (singleton)
      • @store = RKManagedObjectStore.alloc.initWithPersistentStoreCoordinator(cdq.stores.current)
      • cdq.contexts.push(@store.persistentStoreManagedObjectContext)
      • cdq.contexts.push(@store.mainQueueManagedObjectContext)
    • @manager.addRequestDescriptor(task_request_descriptor)
      • @task_request_descriptor = RKRequestDescriptor.requestDescriptorWithMapping
        • task_request_mapping
    • @manager.addResponseDescriptor(task_response_descriptor)
      • @task_response_descriptor = RKResponseDescriptor.responseDescriptorWithMapping
      • statusCodes: RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)
  • task_request_mapping
    • @task_request_mapping = RKObjectMapping.requestMapping
    • @task_request_mapping.addAttributeMappingsFromArray(['name', 'note', 'due_at'])
    • @task_request_mapping.addAttributeMappingsFromDictionary({'task_id' => 'id'})
  • @task_mapping = RKEntityMapping.mappingForEntityForName('Task', inManagedObjectStore: store)
  • Command Design Pattern
    • LoadTasksCommand
      • SVProgressHUD.showWithStatus('Loading Tasks')
      • Dispatch::Queue.concurrent(:default).async do
      • RemoteManager.object_manager.getObjectsAtPath
      • unless mapping_result.array.include? task
        • task.destroy
    • AddTaskCommand
      • RemoteManager.object_manager.postObject
    • UpdateTaskCommand
      • RemoteManager.object_manager.patchObject(@task,
    • DeleteTaskCommand
      • RemoteManager.object_manager.deleteObject
  • TaskListController refresh
    • LoadTasksCommand.run