Nano Hash - криптовалюты, майнинг, программирование

Rubymotion и RestKit

Кто-нибудь заставил Rubymotion работать с RKObjectManager RestKit и успешно загрузил некоторые объекты с сервера? У меня много проблем с этим. У меня RKClient RestKit работает хорошо. Я могу получить и отправить успешно, и это здорово. Но я не могу загрузить ресурсы с помощью RKObjectManager. Мой Rakefile выглядит так:

$:.unshift("/Library/RubyMotion/lib")
require 'motion/project'

Motion::Project::App.setup do |app|
  # Use `rake config' to see complete project settings.
  app.name = 'RestKitTest'
  app.frameworks += %w(CoreData CFNetwork Security MobileCoreServices SystemConfiguration QuartzCore)
  app.vendor_project('vendor/RestKit', :xcode, :target => 'RestKit', :headers_dir => '../Headers/RestKit/')
end

мой делегат приложения выглядит так:

class AppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)
    @window = UIWindow.alloc.initWithFrame UIScreen.mainScreen.bounds
    @window.rootViewController = TestViewController.alloc.init
    @window.rootViewController.wantsFullScreenLayout = true
    @window.makeKeyAndVisible
    true
  end
end

и мой заглушка TestViewController выглядит так:

class TestViewController < UIViewController
  def init
    super

    puts "checkpoint 1"

    manager = RKObjectManager.managerWithBaseURLString "http://mlpong.herokuapp.com"
    puts "checkpoint 2"

    mapping = RKObjectMapping.mappingForClass League.class
    puts "checkpoint 3"

    # mapping.mapAttributes("id", "name", "url", nil)
    mapping.mapKeyPath("id", toAttribute:"id")
    mapping.mapKeyPath("name", toAttribute:"name")
    mapping.mapKeyPath("url", toAttribute:"url")
    puts "checkpoint 4"

    manager.mappingProvider.setObjectMapping(mapping, forKeyPath:"")
    puts "checkpoint 5"

    manager.loadObjectsAtResourcePath("/leagues.json?auth_token=my_auth_token", delegate:self)
    puts "checkpoint 6"

    self
  end

  def objectLoader(loader, didFailWithError:error)
    puts "failed with error: #{error.domain}"
  end

  def objectLoader(loader, didLoadObjects:objects)
    puts "success!"
  end
end

к сожалению, вы не можете протестировать этот точный код, потому что вам понадобится мой токен авторизации для сайта.

Метод mapAttributes класса RKObjectMapping (закомментированный выше) не будет работать. Если оставлю, приложение выдает чекпойнты 1-3 и дальше фрики. rake --trace показывает это:

** Invoke default (first_time)
** Invoke simulator (first_time)
** Invoke build:simulator (first_time)
** Execute build:simulator
** Execute simulator
/usr/bin/defaults write com.apple.iphonesimulator "SimulateDevice" "'iPhone'"
DYLD_FRAMEWORK_PATH="/Applications/Xcode.app/Contents/Developer/../Frameworks":"/Applications/Xcode.app/Contents/Developer/../OtherFrameworks" /Library/RubyMotion/bin/sim 2 1 5.1 "/Applications/Xcode.app/Contents/Developer" "./build/iPhoneSimulator-5.1-Development/RestKitTest.app"
checkpoint 1
checkpoint 2
checkpoint 3
(main)> ** Execute default

Если я закомментирую строку mapAttributes и использую другую (более длинную) версию сопоставления объектов (3 строки, оставленные без комментариев перед контрольной точкой 4), я пройду все контрольные точки, но получу это, когда rake --trace:

** Invoke default (first_time)
** Invoke simulator (first_time)
** Invoke build:simulator (first_time)
** Execute build:simulator
** Execute simulator
/usr/bin/defaults write com.apple.iphonesimulator "SimulateDevice" "'iPhone'"
DYLD_FRAMEWORK_PATH="/Applications/Xcode.app/Contents/Developer/../Frameworks":"/Applications/Xcode.app/Contents/Developer/../OtherFrameworks" /Library/RubyMotion/bin/sim 2 1 5.1 "/Applications/Xcode.app/Contents/Developer" "./build/iPhoneSimulator-5.1-Development/RestKitTest.app"
checkpoint 1
checkpoint 2
checkpoint 3
checkpoint 4
checkpoint 5
checkpoint 6
(main)> terminate called without an active exception** Execute default

Я застрял с этими ошибками весь день. Если у кого-то есть идеи, пожалуйста, дайте мне знать. Помощь очень ценится. Спасибо,

Пачун


  • Ваша первая проблема заключается в том, что mapAttributes следует использовать так: mapping.mapAttributes(["id", "name", "url"]). Однако я до сих пор не знаю, как обойти вторую ошибку. (Этот код, похоже, отлично работает в стандартном проекте Xcode/Objective-C, но не в проекте rubymotion) 26.05.2012

Ответы:


1

Вы вызвали некоторые несуществующие методы.

manager.mappingProvider.setObjectMapping(mapping, forKeyPath:"")
puts "checkpoint 5"

manager.loadObjectsAtResourcePath("/leagues.json?auth_token=my_auth_token", delegate:self)
puts "checkpoint 6"

Должно быть.

manager.loadObjectsAtResourcePath("/leagues.json?auth_token=my_auth_token", mapping:mapping, delegate:self)
puts "checkpoint 5"

См. аналогичный вопрос, на который я нашел ответ: loadObjectsAtResourcePath (RestKit)

15.12.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


© 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование