嘿,我正在为我们的应用程序模型层工作.
一些要求是这样的:
我查看了关于构建服务器驱动的用户体验的WWDC10 Session 117,花了一些时间查看Objective Resource,Core Resource和RestfulCoreData框架.
Objective Resource框架本身不与Core Data对话,仅仅是一个REST客户端实现.Core Resource和RestfulCoreData都假设您在代码中与Core Data交谈,并且它们解决了模型层背景中的所有细节.
到目前为止所有看起来都没问题,最初我虽然核心资源或RestfulCoreData将涵盖所有上述要求,但是...有一些事情似乎没有一个正好解决:
当您调用- (BOOL)save:(NSError **)error托管对象上下文时,核心资源恰好向服务器发出所有请求,因此能够以某种方式向服务器提供正确的基础请求的NSError实例.但它会阻止调用线程,直到保存操作完成.失败.
RestfulCoreData保持您的-save:调用不变,并且不会为客户端线程引入任何额外的等待时间.它只是注意NSManagedObjectContextDidSaveNotification,然后在通知处理程序中向服务器发出相应的请求.但这种方式的-save:呼叫总是成功完成(当然,考虑到核心数据是好的,与保存的更改),并且实际调用它没有办法知道节省,可能也没有传播到因为一些服务器的客户端代码404或421或任何发生服务器端错误.甚至更多,本地存储变得更新数据,但服务器永远不知道更改.失败.
所以,我正在寻找可能的解决方案/常见做法来处理所有这些问题:
-save:在网络请求发生时阻塞每次调用.有任何想法吗?
我正在尝试在Rails中编写一个简单的OAuth消费者应用程序.我正在使用Authlogic来处理身份验证,使用Authlogic OAuth插件来执行oauth操作.
oauth插件提供了几个帮助来呈现登录按钮:oauth_login_button和oauth_register_button.与Authlogic逻辑和插件的请求过滤器一起,这两个按钮以某种方式创建会话/用户.
接下来发生的事情如下: - 如果我使用oauth_login_button助手,那么会话对象无法保存,因为本地没有这样的用户. - 如果我使用oauth_register_button助手,那么,在第一个之后的任何登录中,Rails会抱怨已经取得了令牌......这意味着它无法为同一个用户创建第二个副本,这是正确的.
问题是:我不想在我的网站上有两个注册和登录按钮.
在用户方面,我想要实现的是起始页面上的一个按钮,说smth.例如"使用Twitter登录",用户必须单击该页面以进入网站的内部页面.
在服务器端,如果用户是我网站的第一次访问者,我想隐式创建本地用户帐户.
关于如何做到这一点的任何提示?
Authlogic + OAuth上的所有样本我都能找到,似乎并不关心只有一个按钮可以登录.:(
我正在尝试在试剂中呈现React Native ListView.
我有以下代码段:
(def data-source
(React.ListView.DataSource. #js{:rowHasChanged (fn [a b] false)}))
(defn render-row []
[ui/view])
(def rows
(clj->js ["whoa", "hey"]))
(defn main-scene []
(fn []
[ui/list-view {:render-row render-row
:data-source (.cloneWithRows data-source rows)}]))
Run Code Online (Sandbox Code Playgroud)
上面导致"失败的propType:dataSource未指定所需的prop ListView.检查渲染方法app.ios.ui.main_scene." 接下来是"无法读取未定义的属性'rowIdentities',因为数据源在ListView的render方法中未定义.
我的第一个猜测是在试剂/打嗝或其他任何东西的某个地方对某些"数据"属性进行了一些特殊处理,但我找不到为什么该属性没有正确传播的单一线索.
而且,是的,(.cloneWithRows data-source rows)实际上返回一个有效的ListViewDataSource对象实例.
然后,如果我通过:data-source,:dataSource我得到的是一个令人费解的"StaticRenderer.render():必须返回一个有效的ReactComponent.你可能已经返回了undefined,一个数组或一些其他无效对象."
我使用react-native 0.18.1和reagent 0.5.1用re-frame 0.6.0.我曾与选中此reagent 0.6.0-alpha和re-frame 0.7.0-alpha,得到了相同的错误.
我一直在挖这个几个小时,我想我需要一些帮助.尝试修复此问题的任何提示/想法,代码中的任何引用都要查看?非常感谢提前.
我正在尝试找到一种通过函数列表来线程化值的方法.
首先,我有一个通常的基于铃声的代码:
(defn make-handler [routes]
(-> routes
(wrap-json-body)
(wrap-cors)
;; and so on
))
Run Code Online (Sandbox Code Playgroud)
但这不是最优的,因为我想编写一个测试来检查路由实际上是用wrap-cors包裹的.我决定将包装器解压缩成def.所以代码变成如下:
(def middleware
(list ('wrap-json-body)
('wrap-cors)
;; and so on
))
(defn make-handler [routes]
(-> routes middleware))
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,并不应该因为->宏没有将列表作为第二个参数.所以我尝试使用该apply函数来解决这个问题:
(defn make-handler [routes]
(apply -> routes middleware))
Run Code Online (Sandbox Code Playgroud)
最终拯救了:
CompilerException java.lang.RuntimeException:无法获取宏的值:#'clojure.core/ - >
所以问题就出现了:如何将一个值列表传递给->宏(或者说,任何其他宏),就像apply对函数一样?