小编tof*_*ffe的帖子

使用Codable序列化为JSON时Swift String转义

我正在尝试将我的对象序列化如下:

import Foundation

struct User: Codable {
    let username: String
    let profileURL: String
}

let user = User(username: "John", profileURL: "http://google.com")

let json = try? JSONEncoder().encode(user)

if let data = json, let str = String(data: data, encoding: .utf8) {
    print(str)
}
Run Code Online (Sandbox Code Playgroud)

但是在macOS上我得到以下内容:

{"profileURL":"http:\/\/google.com","username":"John"}
Run Code Online (Sandbox Code Playgroud)

(注意转义'/'字符).

在Linux机器上,我得到:

{"username":"John","profileURL":"http://google.com"}
Run Code Online (Sandbox Code Playgroud)

如何让JSONEncoder在macOS上返回未转义的表单?

我需要JSON中的字符串严格未转义.

macos json ios swift codable

24
推荐指数
3
解决办法
8478
查看次数

解析失败:Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension;

我在最新的AndroidStudio预览版中使用了RxJava和Retrofit.我的项目启用了java 1.8 suport,如下所示:

compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}
Run Code Online (Sandbox Code Playgroud)

但是当编译并运行代码时,即使我有onError处理程序,一旦发出请求,我就会收到此错误:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension;
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:281)
at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:58)
at io.reactivex.Observable.subscribe(Observable.java:10179)
at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
at io.reactivex.Observable.subscribe(Observable.java:10179)
at io.reactivex.internal.operators.flowable.FlowableFromObservable.subscribeActual(FlowableFromObservable.java:31)
at io.reactivex.Flowable.subscribe(Flowable.java:12218)
at io.reactivex.internal.operators.flowable.FlowableOnBackpressureLatest.subscribeActual(FlowableOnBackpressureLatest.java:31)
at io.reactivex.Flowable.subscribe(Flowable.java:12218)
Run Code Online (Sandbox Code Playgroud)

即使我使用Maybe,Single或Observable,也会发生这种情况.如何解决这个问题?

android rx-java retrofit2 android-studio-3.0

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

在框架iOS中嵌入框架

我有一个项目包含另一个目标(框架),它是主项目的依赖项.该框架需要它自己的框架,所以我使用carthage添加它们.该项目在模拟器上编译并运行良好,但是在物理设备上运行时遇到以下错误:

dyld: Library not loaded: @rpath/Subframework.framework/Subframework
  Referenced from: /private/var/mobile/Containers/Bundle/Application/LONG-ID/MyApp.app/Frameworks/MyAppSDK.framework/MyAppSDK
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/LONG-ID/MyApp.app/Frameworks/MyAppSDK.framework/Frameworks/Subframework.framework/Subframework: mmap() error 1 at address=0x00798000, size=0x00060000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/LONG-ID/MyApp.app/Frameworks/MyAppSDK.framework/Frameworks/Subframework.framework/Subframework
Run Code Online (Sandbox Code Playgroud)

我试过这个,但唯一的解决方案是将Subframework添加到"嵌入框架"到顶级项目,这是不可行的.我已经尝试修改构建设置 - >链接 - >动态库安装名称,但它没有帮助.

怎样才能让它在iphone上运行?

frameworks ios xcode7

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

将MockWebServer与Robolectric一起使用

我正在尝试使用MockWebServer和Robolectric对一些API调用进行单元测试.

我的测试类注释为:

@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 23)
Run Code Online (Sandbox Code Playgroud)

但是,在尝试构建Retrofit实例时,我得到以下异常:

java.lang.NullPointerException
    at android.os.Handler.__constructor__(Handler.java:229)
    at android.os.Handler.<init>(Handler.java)
    at retrofit2.Platform$Android$MainThreadExecutor.<init>(Platform.java:105)
    at retrofit2.Platform$Android.defaultCallbackExecutor(Platform.java:97)
    at retrofit2.Retrofit$Builder.build(Retrofit.java:556)
Run Code Online (Sandbox Code Playgroud)

我用来构建改造实例的代码:

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(mMockServer.url(""))
                .addConverterFactory(GsonConverterFactory.create())
                .build();
Run Code Online (Sandbox Code Playgroud)

上面的例外是在打电话时返回的.build().

我该如何解决这个问题?

junit robolectric retrofit mockwebserver

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

改造JavaRx2线程中断

我正在创建嵌套请求,如下所示(省略了一些错误处理):

return Single.create((SingleOnSubscribe<String>) emitter -> getPages()
    .subscribe(pages -> getPageData(emitter, pages), emitter::onError))
    .compose(applySchedulers());

    // ...

private void getPageData(SingleEmitter<String> emitter, List<Page> pages) {
    service.getPage(pages.get(0).id)
            .subscribe(emitter::onSuccess, e -> {
                pages.remove(0);
                getPageData(emitter, pages);
            });
}
Run Code Online (Sandbox Code Playgroud)

我曾经有一个迭代解决方案,它产生了相同的结果.页面列表按顺序排序,应按原样处理.如果连接良好,这部分代码可以正常工作,但是如果我碰巧遇到了错误的连接java.io.InterruptedIOException: thread interrupted.解决这个问题的好方法是什么?

编辑:

堆栈跟踪:

W/System.err: java.io.InterruptedIOException: thread interrupted
W/System.err:     at okio.Timeout.throwIfReached(Timeout.java:145)
W/System.err:     at okio.Okio$2.read(Okio.java:136)
W/System.err:     at okio.AsyncTimeout$2.read(AsyncTimeout.java:237)
W/System.err:     at okio.RealBufferedSource.read(RealBufferedSource.java:46)
W/System.err:     at okhttp3.internal.http1.Http1Codec$ChunkedSource.read(Http1Codec.java:429)
W/System.err:     at okio.RealBufferedSource.read(RealBufferedSource.java:46)
W/System.err:     at okio.RealBufferedSource.exhausted(RealBufferedSource.java:56)
W/System.err:     at okio.InflaterSource.refill(InflaterSource.java:101)
W/System.err:     at okio.InflaterSource.read(InflaterSource.java:62)
W/System.err:     at okio.GzipSource.read(GzipSource.java:80)
W/System.err:     at okio.RealBufferedSource.read(RealBufferedSource.java:46)
W/System.err:     at okio.ForwardingSource.read(ForwardingSource.java:35)
W/System.err:     at …
Run Code Online (Sandbox Code Playgroud)

android retrofit2 rx-java2

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

计算事件的最有效方法?

我有一个字节数组(原始),它们可以有随机值.我试图以最有效/最快的方式计算它们在数组中的出现次数.目前我正在使用:

HashMap<Byte, Integer> dataCount = new HashMap<>();
for (byte b : data) dataCount.put(b, dataCount.getOrDefault(b, 0) + 1);
Run Code Online (Sandbox Code Playgroud)

这个单行程需要大约500ms来处理长度为24883200字节[].使用常规for循环至少需要600ms.

我一直在考虑构造一个集合(因为它们只包含每个元素中的一个),然后使用Collections.frequency()将它添加到HashMap ,但是从原语构造Set的方法需要几个其他调用,所以我是猜测它不是那么快.

完成每个项目发生次数的最快方法是什么?

我正在使用Java 8,如果可能的话,我宁愿避免使用Apache Commons.

java performance counting

5
推荐指数
2
解决办法
1122
查看次数

GTK - 定制形状的窗户

我正在寻找一种方法来创建带有孔的自定义形状窗口,例如 BS-Player 的窗口:

在此输入图像描述

灰色和蓝色部分之间的区域是透明且可点击的。我寻求实现类似的功能,例如有一个带有方形“孔”的方形窗口。这可以用 GTK(C/C++、Python 等)实现吗?

pygtk gtkmm gtk3

5
推荐指数
0
解决办法
326
查看次数

从终端打开 chrome:// 协议

我在使用 URL 参数协议从命令提示符启动 chrome 时遇到问题chrome://(示例chrome.exe chrome://settings:)。结果是一个带有空白页面的新镀铬窗口。其他协议(文件、http、https 等)也可以工作。是否有任何解决方法可以chrome://从终端启动协议?

google-chrome

5
推荐指数
0
解决办法
187
查看次数

配置.编译为空

我一直在使用以下任务来复制库:

task copyLibs(type: Copy, dependsOn: 'cleanLibs') {
    from configurations.compile
    into 'libs'
}
Run Code Online (Sandbox Code Playgroud)

但在新版本的 gradle 中,编译配置被实现所取代。我认为这就是configurations.compile 列表现在为空的原因。我尝试过直接引用configuration.implementationconfiguration.implementation.resolvedConfiguration但这会产生以下错误:

Resolving configuration 'implementation' directly is not allowed
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用configurations.compile.resolvedConfiguration我会得到org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver$ErrorHandlingResolvedConfiguration@5bb68e71

如何实现预期结果(将所有依赖项复制到“libs”文件夹)?

android gradle android-gradle-plugin

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

SPARQL递归祖先查询

我在SPARQL中遇到了递归查询,我无法绕过它.我想得到一个实例" a"(a hasParent b, b hasParent c, c hasParent d)的所有祖先,所以b, c ,and d如果实例是" a" ,结果将是" ".

任何想法如何构建父母拥有另一个父母的父母的链接部分?(递归的深度未知)

sparql

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