小编drh*_*rhr的帖子

如何在C++中更改拉丁文UTF-8字符串的大小写?

在Objective-C中,它很简单:

NSLog(@"%@", [@"BAÑO" lowercaseString]);  // Outputs "baño".
Run Code Online (Sandbox Code Playgroud)

在C++中,什么是等价的?任何人都可以为此提供产生相同输出的有效代码吗?有没有一个很好的STL方式来做到这一点,而不依赖于ICU,Boost或任何其他第三方库?

我目前的非解决方案是:

using namespace std;
string s = "BAÑO";
wstring w(s.begin(), s.end());
transform(w.begin(), w.end(), w.begin(), towlower);
// w contains "baÑo"
Run Code Online (Sandbox Code Playgroud)

c++ stl utf-8

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

Ormlite Android批量插入

任何人都可以解释为什么我的插页在Ormlite中花了这么长时间?在桌面上的一个sqlite事务中执行1,700次插入只需不到一秒钟.但是,当使用Ormlite for Android时,它需要大约70秒,我可以在调试消息中看到每个插入.

当我尝试将插入包装到一个事务中时,它以完全相同的速度运行.我知道Android和Ormlite都有开销,但是,我不希望它那么棒.我的代码如下:

    this.db = new DatabaseHelper(getApplicationContext());
    dao = db.getAddressDao();
final BufferedReader reader = new BufferedReader(new InputStreamReader(getResources().openRawResource(R.raw.poi)));
    try {
        dao.callBatchTasks(new Callable<Void>() {
            public Void call() throws Exception {
                String line;
                while ((line = reader.readLine()) != null) {
                    String[] columns = line.split(",");
                    Address address = new Address();
                    // setup Address
                    dao.create(address);
                } 
            return null;
         }
        });
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

sqlite android transactions ormlite

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

使用ReactiveCocoa时未调用错误块

出于某种原因,我没有收到错误消息.(我在这里简化了代码以直截了当.)

// Send an error message 
_loginButton.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        [subscriber sendError:error]; // Pretend this is a real error
        return nil;
    }];
}];

// Subscribe to loginButton's returned signal
[_loginButton.rac_command.executionSignals subscribeNext:^(RACSignal *loginSignal) {
    [loginSignal subscribeError:^(NSError *error) {
         NSLog(@"A");
    } completed:^{
         NSLog(@"B");
    }];
}];
Run Code Online (Sandbox Code Playgroud)

这打印"B".知道为什么吗?如果-sendError:在订户上调用,为什么完成块会收到它?

objective-c ios reactive-cocoa

7
推荐指数
2
解决办法
1825
查看次数

如何使用ReactiveCocoa影响多个属性?

我想影响多个属性,并且还有一个活动的命令UIButton.

我试图推断最佳方法,但可以使用一些输入.

这是我有的:

// Listen for changes on the textfields, alter the button UI state
[[RACSignal
  combineLatest:@[ _usernameField.rac_textSignal,_passwordField.rac_textSignal]
  reduce:^id(NSString *username, NSString *password) {
      BOOL valid = [username length] >= 4 && [password length] >= 4;
      _loginButton.enabled = valid;
      _loginButton.alpha = valid ?: 0.65;
      return nil;
  }] subscribeCompleted:^{}];

// Listen for taps
_loginButton.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    NSLog(@"Tap");
    return [RACSignal empty];
}];
Run Code Online (Sandbox Code Playgroud)

这有效,但我很乐意听到任何建议.

objective-c ios reactive-cocoa

3
推荐指数
1
解决办法
1051
查看次数

有没有办法让RACSignal在出错后继续接收`next`s?

我正在尝试监听位置更新和错误(通过CLLocationManagerDelegate),并支持跟踪错误但从最终信号中过滤掉并保持活动的能力.

当我订阅位置信号(通过ReactiveCocoaPlayground -[LocationManager currentLocationSignal])时,收到的任何错误都将结束信号.

我试过-catch:-catchTo:,但这些只是赶上一个错误,然后结束的信号.

我已经尝试在里面返回一个全新的信号实例-catch:,但是那时THAT信号的错误没有被捕获(这导致RAC()后来的绑定崩溃).

我也试过了一个递归方法来捕获这个问题,导致堆栈溢出(可能我只是犯了一个错误).

next错误发生后有没有办法接收?

objective-c ios reactive-cocoa racsignal

3
推荐指数
1
解决办法
448
查看次数

将RACCommands组合成一个共同结果的最佳方法是什么?

使用ReactiveCocoa 2.0,是否有更好的方法来执行以下操作,而无需实现/取消实现,并且仍然能够从3个信号中的任何一个捕获错误,而无需重复代码?

有3个登录按钮.每个返回对应于异步"登录"API调用的信号.完成后,它们将返回用户对象,错误和/或完成.

// Login signals
_loginButton.rac_command = [[RACCommand alloc] initWithEnabled:loginValid signalBlock:^RACSignal *(id input) {
    return [[API doLogin:_usernameField.text password:_passwordField.text] materialize];
}];
_fbLoginButton.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    return [[API doFacebookLogin] materialize];
}];
_twLoginButton.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    return [[API doTwitterLogin] materialize];
}];

// Login response from any of the 3 signals
[[RACSignal
  merge:@[_loginButton.rac_command.executionSignals,
          _fbLoginButton.rac_command.executionSignals,
          _twLoginButton.rac_command.executionSignals]]
 subscribeNext:^(RACSignal *loginSignal) {
     RACSignal * s = [loginSignal dematerialize];
     [s subscribeNext:^(User *x) {
        NSLog(@"user: %@", x);
     } error:^(NSError *error) { …
Run Code Online (Sandbox Code Playgroud)

objective-c ios reactive-cocoa

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

在Android上的Scala代码中改进HTTP报告"HTTP方法注释是必需的"

我遇到了一个问题,其中Retrofit库正在识别方法而不是它的注释.它报告了上面标题中的错误消息.

(背景:我正在使用SBT sbt-android-plugin和Retrofit 1.6.1)

我的代码是这样的:

private trait MyService {
    @GET("/api/test")
    def test(): Observable[Any]
}

object MyService {
    private val restAdapter = new RestAdapter.Builder().setEndpoint("http://somewhere").build()
    val service = restAdapter.create(classOf[MyService])

    service.test().subscribe(/* you get the idea */) // This line throws a RuntimeException with message in title above
}
Run Code Online (Sandbox Code Playgroud)

GitHub周围散布着一个非常类似的例子,显然来自Reactive原则课程,例如这里.我只想说,我的设置是一样的.

当我单步执行时RestMethodInfo.parseMethodAnnotations(),requestMethod变量确实为null,requestTypeSIMPLE.如果我将@FormUrlEncoded注释添加到我的测试方法,requestType仍然设置为SIMPLE.

关于可能导致这种情况的任何想法?

java android scala retrofit

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