小编jlh*_*ora的帖子

连锁多个Alamofire请求

我正在寻找一个可以链接多个HTTP请求的好模式.我想使用Swift,最好是Alamofire.

比如说,我想做以下事情:

  1. 提出PUT请求
  2. 发出GET请求
  3. 用数据重新加载表

承诺的概念似乎很适合这一点.如果我可以做这样的事情,PromiseKit可能是个不错的选择:

NSURLConnection.promise(
    Alamofire.request(
        Router.Put(url: "http://httbin.org/put")
    )
).then { (request, response, data, error) in
    Alamofire.request(
        Router.Get(url: "http://httbin.org/get")
    )   
}.then { (request, response, data, error) in
    // Process data
}.then { () -> () in
    // Reload table
}
Run Code Online (Sandbox Code Playgroud)

但那是不可能的,或者至少我不知道.

如何在不嵌套多个方法的情况下实现此功能?

我是iOS的新手,所以也许有一些我缺少的基础知识.我在其他框架(如Android)中所做的是在后台进程中执行这些操作并使请求同步.但Alamofire本质上是异步的,所以这种模式不是一种选择.

ios swift alamofire promisekit

46
推荐指数
4
解决办法
3万
查看次数

Android测试原始资源

我在Android Studio中有以下文件夹结构:

??? androidTest
?   ??? java
?   ??? res
?       ??? raw
?           ??? test_file
??? main
    ??? java
    ??? res
        ??? raw
            ??? app_file
Run Code Online (Sandbox Code Playgroud)

我正在尝试访问test_fileandroidTest元素的原始文件夹中存在的资源.这是继承自以下内容的Robotium测试用例中的代码ActivityInstrumentationTestCase2:

InputStream is = this.getInstrumentation()
                 .getContext()
                 .getResources()
                 .openRawResource(R.raw.test_file);
Run Code Online (Sandbox Code Playgroud)

由于无法找到资源,Android Studio会引发参考错误.确切的错误是"无法解析符号test_file".

如何从androidTest资源包中存在的测试用例中引用此资源?

android robotium android-resources

36
推荐指数
2
解决办法
1万
查看次数

Android数据绑定与自定义适配器

我正在尝试将Android的数据绑定功能与自定义适配器和ListView一起使用.我无法覆盖自定义适配器的getView方法:

public class ChecksAdapter extends ArrayAdapter<Check> {

    public ChecksAdapter(Context context, ObservableList<Check> checks) {
        super(context, R.layout.check, checks);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        CheckBinding binding = DataBindingUtil.inflate(
                LayoutInflater.from(getContext()),
                R.layout.check, parent, false);
        binding.setCheck(this.getItem(position));

        // Return what?
    }

}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  • 我在哪里可以得到View我应该返回的元素?或者换句话说,如何将对象绑定到膨胀/转换视图?
  • convertView使用数据绑定时如何重用?
  • 这是实现这个的正确方法吗?ListViews上的指南不是很清楚

以下是本指南中ListViews的唯一参考:

如果您在ListView或RecyclerView适配器中使用数据绑定项,您可能更喜欢使用:

   ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup, false);
   //or
   ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);
Run Code Online (Sandbox Code Playgroud)

android android-databinding

15
推荐指数
3
解决办法
8334
查看次数

Gmail电子邮件标记无效

我正在为Parcel Deliveries测试Gmail的电子邮件标记功能,但似乎我无法做到这一点.这是向我发送电子邮件后的电子邮件内容:

Return-Path: <test.email@gmail.com>
Received: from my-pc.local ([my.ip.add.ress])
        by mx.google.com with ESMTPSA id 68sm3737559qgz.8.2015.01.29.06.06.37
        for <test.email@gmail.com>
        (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Thu, 29 Jan 2015 06:06:38 -0800 (PST)
Date: Thu, 29 Jan 2015 11:06:33 -0300
From: "Test Name" <test.email@gmail.com>
To: test.email@gmail.com
Subject: Your package is on its way
Message-ID: <20150129140633.GA18059@my-pc.local>
MIME-Version: 1.0
Content-Type: text/html; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.23 (2014-03-12)

<html>
  <body>
    <script type="application/ld+json">
    {
      "@context": "http://schema.org",
      "@type": "ParcelDelivery",
      "deliveryAddress": {
        "@type": "PostalAddress",
        "streetAddress": "Test Address", …
Run Code Online (Sandbox Code Playgroud)

html email gmail json-ld

12
推荐指数
1
解决办法
2852
查看次数

ActiveAndroid Update()查询

我正在尝试使用ActiveAndroid对列进行批量更新.这是我的代码:

new Update(SomeModel.class).set("Enabled = 0").execute();
Run Code Online (Sandbox Code Playgroud)

但是我得到了一个StackOverflowError.(编辑:我的不好,错误是在其他地方).有谁知道如何执行Update()查询?它在ActiveAndroid的wiki中没有说什么.

编辑:

这个语法是正确的:

new Update(SomeModel.class)
  .set("Enabled = 0")
  .where("Account = ?", account.getId())
  .execute();
Run Code Online (Sandbox Code Playgroud)

where如果不需要,您可以跳过.

android activeandroid android-sqlite

11
推荐指数
2
解决办法
1万
查看次数

Alamofire接受和内容类型JSON

我正试图在Swift中向Alamofire提出GET请求.我需要设置以下标题:

Content-Type: application/json
Accept: application/json
Run Code Online (Sandbox Code Playgroud)

我可以破解它并直接指定请求的标题,但我想这样做ParameterEncoding,如库中建议的那样.到目前为止我有这个:

Alamofire.request(.GET, url, encoding: .JSON)
    .validate()
    .responseJSON { (req, res, json, error) in
        if (error != nil) {
            NSLog("Error: \(error)")
            println(req)
            println(res)
        } else {
            NSLog("Success: \(url)")
            var json = JSON(json!)
        }
}
Run Code Online (Sandbox Code Playgroud)

Content-Type设定,但不是Accept.我该怎么做呢?

json ios swift alamofire

11
推荐指数
2
解决办法
2万
查看次数

Android数据绑定条件资源

以下是Android数据绑定的典型用法:

android:background="@{isError ? @color/red : @color/white}"
Run Code Online (Sandbox Code Playgroud)

当州可以采用多个价值观时会变得更加困难.编辑:使用方法调用中的status属性是使其工作的唯一方法:

android:background="@{Check.getStatusColor(check.status)}"
Run Code Online (Sandbox Code Playgroud)

并定义静态方法(没有@Bindable):

public int getStatusColor(int status) {
    switch (status.get()) {
        case STATUS_OK:
            return ContextCompat.getColor(context, R.color.success);
        case STATUS_WARNING:
            return ContextCompat.getColor(context, R.color.warning);
        case STATUS_ERROR:
            return ContextCompat.getColor(context, R.color.error);
        default:
            return ContextCompat.getColor(context, R.color.idle);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在没有将嵌套的三元运算符放入XML(我没有发现非常优雅,顺便说一句)或不传递check.status属性的情况下实现这一点?

编辑:添加XML:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <import type="org.honorato.diagnostics.models.Check"/>
        <variable
            name="check"
            type="Check"/>
    </data>
    <LinearLayout
        android:background="@android:color/white"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="72dp"
        >

        <LinearLayout
            android:padding="16dp"
            android:layout_width="0dip"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:text="@{check.title}"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@android:color/primary_text_light"
                android:textStyle="bold" />

        </LinearLayout>

        <ImageView
            android:padding="16dp"
            android:src="@{check.getStatusDrawable(check.status)}" …
Run Code Online (Sandbox Code Playgroud)

android android-databinding

11
推荐指数
1
解决办法
4476
查看次数

端到端SNS到SQS FIFO消息

通过在SQS中引入FIFO队列,我们可以确保SQS消息将按顺序传递。

现在,当我通过SNS发布消息时,是否会出现乱序传递?这是我想可能会发生的事情:

 _____                       _____                       __________
| App |-- Publish msg 1 --> | SNS | --> Queue msg 2 --> | FIFO SQS | --> Consume 2
|     |-- Publish msg 2 --> |     | --> Queue msg 1 --> |          | --> Consume 1
 -----                       -----                       ----------
Run Code Online (Sandbox Code Playgroud)

那有可能吗?

amazon-sqs amazon-web-services amazon-sns

9
推荐指数
2
解决办法
3784
查看次数

在Go中评估公式

使用Go(golang)我想带一个带有公式的字符串并使用预定义的值进行评估.这是使用python parser模块的方法:

x = 8
code = parser.expr("(x + 2) / 10").compile()
print eval(code)
# prints 1
Run Code Online (Sandbox Code Playgroud)

知道如何用Go做到这一点?

go

8
推荐指数
2
解决办法
8149
查看次数

Ruby变量定义

我偶然发现了ruby中关于变量定义的奇怪行为(并且在途中丢失了一盒甜甜圈):

irb(main):001:0> if false
irb(main):002:1>   a = 1
irb(main):003:1> end
=> nil
irb(main):005:0> a.nil?
=> true
irb(main):006:0> b.nil?
NameError: undefined local variable or method `b' for main:Object
    from (irb):6
    from /Users/jlh/.rbenv/versions/2.1.5/bin/irb:11:in `<main>'
Run Code Online (Sandbox Code Playgroud)

为什么不a.nil?undefined local variable?例如,看一下python(只是想将它与解释语言进行比较):

>>> if False:
...     a = 1
... 
>>> print a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
Run Code Online (Sandbox Code Playgroud)

在编译语言中,这甚至不会编译.

  • 这是否意味着ruby保留对该变量的引用,即使它没有经过那段代码?
  • 如果是这样,ifs/else考虑变量定义有多深?

我真的不敢相信这是红宝石中的预期行为.并且它不是特定于irb的,在ruby/rails代码块中运行它会产生相同的结果.

ruby interpreted-language ruby-on-rails abstract-syntax-tree

8
推荐指数
1
解决办法
194
查看次数