CoreDataQuery에서 CRUD를 구현하는 [RubyMotion]
10672 단어 RubyMotionCoreData
개시하다
마지막 "CoreDataQuery를 사용하여 데이터 저장"에서는 CoreDataQuery를 사용하여 데이터를 저장했습니다.
이번에는 콘솔이 아닌 애플리케이션에서 일람, 저장, 업데이트, 삭제를 수행합니다.
차리다
응용 프로그램의 기본 사용저번물
이번에는 폼 화면이 있어 화면 구축을 간소화하기 위해 formotion과ProMotionformotion 조합ProMotion-formotion을 추가했다.
ProMotion-formotion을 사용할 때 현재 ProMotion,formotion은git의 코드를 지정해야 합니다.
Gemfile
source 'https://rubygems.org'
gem 'ProMotion', git: 'https://github.com/clearsightstudio/ProMotion.git'
gem 'formotion', git: 'https://github.com/clayallsopp/formotion.git'
gem 'ProMotion-formotion'
gem 'cdq'
bundle install
및 cdq init
bundle install --path vendor/bundle
bundle exec cdq init
모델을 정의하고 생성할 수도 있습니다.
schemas/0001_initial.rb
schema "0001 initial" do
entity "Item" do
string :body
end
end
app/models/item.rb
class Item < CDQManagedObject
end
app_delegate.rb
지난번과 같다.
app/app_delegate.rb
class AppDelegate < PM::Delegate
include CDQ
def on_load(app, options)
cdq.setup
open ItemsScreen.new(nav_bar: true)
end
end
화면 제작
메인 화면을 만들어라.
app/screens/items_screen.rb
class ItemsScreen < PM::TableScreen
title "Items"
def load_item
PM::logger.debug "load_item"
@items = [
{
cells: Item.map do |item|
{
title: item.body,
action: :tapped_item,
arguments: item,
editing_style: :delete
}
end
}
]
update_table_data
end
def on_load
set_nav_bar_button :right, title: "Add", action: :open_item_form_screen
end
def open_item_form_screen
open ItemFormScreen.new(nav_bar: true), modal: true
end
def on_appear
load_item
end
def table_data
@items ||= []
end
def tapped_item(item)
open ItemFormScreen.new(item: item, nav_bar: true)
end
def on_cell_deleted(cell)
cell[:arguments].destroy
cdq.save
end
end
app/screens/item_form_screen.rb
class ItemFormScreen < PM::FormotionScreen
title "Item"
attr_accessor :item
def on_load
nav_bar_title = item.nil? ? 'Save': 'Update'
set_nav_bar_button :right, title: nav_bar_title, action: :save_item
set_nav_bar_button :left, title: 'Cancel', action: :cancel
end
def save_item
if item.nil?
Item.create(form.render)
else
item.body = form.render[:body]
end
cdq.save
close
end
def cancel
close
end
def table_data
value = item.nil? ? "" : item.body
{
sections: [
{
title: "Item",
rows: [
{
title: "Body",
key: :body,
type: :string,
placeholder: "text here",
value: value
}
]
}
]
}
end
end
이렇게 되면 응용 프로그램 내에서 일람, 제작, 갱신과 삭제를 할 수 있다.
화면을 한 번 훑어보면 삭제 링크가 나타납니다. "Add"단추를 사용하여 새 화면에
또한 각 항목의 헤더를 통해 편집할 수 있다.
Reference
이 문제에 관하여(CoreDataQuery에서 CRUD를 구현하는 [RubyMotion]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/k-shogo/items/55f00183b136a0aeecec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
source 'https://rubygems.org'
gem 'ProMotion', git: 'https://github.com/clearsightstudio/ProMotion.git'
gem 'formotion', git: 'https://github.com/clayallsopp/formotion.git'
gem 'ProMotion-formotion'
gem 'cdq'
bundle install --path vendor/bundle
bundle exec cdq init
schema "0001 initial" do
entity "Item" do
string :body
end
end
class Item < CDQManagedObject
end
class AppDelegate < PM::Delegate
include CDQ
def on_load(app, options)
cdq.setup
open ItemsScreen.new(nav_bar: true)
end
end
메인 화면을 만들어라.
app/screens/items_screen.rb
class ItemsScreen < PM::TableScreen
title "Items"
def load_item
PM::logger.debug "load_item"
@items = [
{
cells: Item.map do |item|
{
title: item.body,
action: :tapped_item,
arguments: item,
editing_style: :delete
}
end
}
]
update_table_data
end
def on_load
set_nav_bar_button :right, title: "Add", action: :open_item_form_screen
end
def open_item_form_screen
open ItemFormScreen.new(nav_bar: true), modal: true
end
def on_appear
load_item
end
def table_data
@items ||= []
end
def tapped_item(item)
open ItemFormScreen.new(item: item, nav_bar: true)
end
def on_cell_deleted(cell)
cell[:arguments].destroy
cdq.save
end
end
app/screens/item_form_screen.rb
class ItemFormScreen < PM::FormotionScreen
title "Item"
attr_accessor :item
def on_load
nav_bar_title = item.nil? ? 'Save': 'Update'
set_nav_bar_button :right, title: nav_bar_title, action: :save_item
set_nav_bar_button :left, title: 'Cancel', action: :cancel
end
def save_item
if item.nil?
Item.create(form.render)
else
item.body = form.render[:body]
end
cdq.save
close
end
def cancel
close
end
def table_data
value = item.nil? ? "" : item.body
{
sections: [
{
title: "Item",
rows: [
{
title: "Body",
key: :body,
type: :string,
placeholder: "text here",
value: value
}
]
}
]
}
end
end
이렇게 되면 응용 프로그램 내에서 일람, 제작, 갱신과 삭제를 할 수 있다.화면을 한 번 훑어보면 삭제 링크가 나타납니다. "Add"단추를 사용하여 새 화면에
또한 각 항목의 헤더를 통해 편집할 수 있다.
Reference
이 문제에 관하여(CoreDataQuery에서 CRUD를 구현하는 [RubyMotion]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k-shogo/items/55f00183b136a0aeecec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)