小编Sté*_*uca的帖子

如何解决"字符串插值产生可选值的调试描述;你的意思是明确这个吗?" 在Xcode 8.3 beta?

从beta 8.3开始,zillions警告"字符串插值会为可选值生成调试描述;你的意思是明确说明吗?" 出现在我的代码中.

例如,警告在以下情况下弹出,其中选项可能导致nil:

let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)"
Run Code Online (Sandbox Code Playgroud)

如前所述,我(和编译器)可以将选项插值为'nil'.但是编译器改变了主意.

编译器建议添加一个带有描述的String构造函数,如下所示:

let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)"
Run Code Online (Sandbox Code Playgroud)

显然,结果是明确的,但在我看来也非常麻烦.有更好的选择吗?我是否必须修复所有警告或更好等待下一个测试版?

截图用于描述

optional string-interpolation swift swift3

76
推荐指数
7
解决办法
3万
查看次数

Swift 3 UnsafePointer($ 0)不再在Xcode 8 beta 6中编译

我的代码snipet如下......:

    let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
        SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
    }
Run Code Online (Sandbox Code Playgroud)

...不再使用以下错误编译,我不明白:

"'init' is unavailable: use 'withMemoryRebound(to:capacity:_)' to temporarily view memory as another layout-compatible type."
Run Code Online (Sandbox Code Playgroud)

该怎么做才能修复它?

unsafe-pointers swift3 xcode8-beta6

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

Swift3:如何处理优先级现在运算符应该用body声明?

运营商的前Swift 3代码是:

infix operator × {associativity left precedence 150}
Run Code Online (Sandbox Code Playgroud)

但是现在,根据Xcode 8 beta 6,这会产生以下警告:

"operator should not be declared with body"
Run Code Online (Sandbox Code Playgroud)

使用优先级组谓词的正确方法是什么,因为现在没有doc存在?

我试过这个,但不起作用:

infix operator × : times
precedencegroup times {
     associativity: left 
     precedence: 150
}
Run Code Online (Sandbox Code Playgroud)

operators swift swift3 xcode8-beta6

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

如何编写需要角度为2的参数的服务构造函数?

我有一个声明MetricsService服务的组件.此服务需要http模块和两个定义主机和要使用的身份验证密钥的字符串.

指标服务如下:

@Injectable()
export class MetricsService {
    constructor(
        private http: Http,
        public wsAuthKey: string,
        public wsHost: string
        ) {
        this.wsAuthKey  = wsAuthKey || "blahblahblahblahblahblahblahblah=";
        this.wsHost     = wsHost    || "https://preprod-admin.myservice.ws";
    }
Run Code Online (Sandbox Code Playgroud)

使用它的组件编写如下:

export class DatavizComponent implements OnInit, OnChanges {
    constructor(
        private zms: MetricsService,
    ) { 
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是我应该如何编写组件构造函数以使整个工作正常,包括传递主机和密钥(但不传递http)?

注意:当前编写的代码无法编译.

更确切地说,我希望该组件提供依赖于应用程序的数据,如下所示:

 export class DatavizComponent implements OnInit, OnChanges {
        constructor(
            private zms = MetricsService("http://myhost.com", "mykey"),
        ) { 
        }
Run Code Online (Sandbox Code Playgroud)

但如果这个工作,如何通过http?

建议解决方案后更新:

export class MetricsService {

    constructor(
        private http: Http,
        @Inject('wsAuthKey') @Optional() public wsAuthKey?: string,
        @Inject('wsHost') …
Run Code Online (Sandbox Code Playgroud)

service constructor angular

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

如何根据其内容调整UIStackView的大小?

我希望有一个类似于<Table>HTML标记的行为,在这种意义上,框架的大小根据其内容而定.

在我的上下文中,我使用UIStackView作为UITableViewCell的内容视图.由于单元格中的项目是各种信息,因此单元格的最终高度应该是可变的.

我的策略是以编程方式将单元格构建为具有.Vertical轴的UIStackView,如下面的代码片段所示:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

    let sv = UIStackView(frame: tableview.frame)
    sv.axis = .Vertical
    cell.addSubview(sv)
    for i in information {
        let l = UILabel()
        l.text = i
        sv.addSubViewAndArrange(l)
    }

    return cell
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,单元格大小不适应内容,因此我必须自己设置单元格高度,如下所示:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return cellHeight     // a constant
}
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?

height uitableview ios swift2 uistackview

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

故事板应用程序在iOS 7上运行OK但在iOS 6.1上的Navbar shift视图

在昨天发布的新Xcode 5重建我的项目时,我很失望地看到我的故事板视图控制器动摇了.

在经过多次尝试修复之后,我必须得出结论,我仍然遇到一个问题:导航视图控制器使导航栏与视图的内容重叠.这样做,iOS 7设备上的应用程序正常(没有重叠),但使用iOS 6.1设备时,导航栏重叠.

我从FlatUI运行了一个示例项目来交叉检查问题,他们遇到了同样的问题.有什么好主意吗?

storyboard ios6.1 ios7

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

WKWebView上的AngularJS:在iOS 9上处理file://的任何解决方案?

我正在向iOS 9移植一个巨大的angularJS应用程序,并希望从WKWebView(从UIWebView迁移)中受益.该应用程序是本地自包含的,因此使用file:// protocol为app主程序包提供所有文件.

不幸的是,听起来WKWebView最初破坏了iOS 8.x上的file://协议,但是当我看到全新的iOS 9 loadFileURL(basePath:,allowReadAccessToURL :) API时,会有一些亮点.

let readAccessPath = NSURL(string:"app", relativeToURL:bundleURL)?.absoluteURL
webView.loadFileURL(basePath!, allowingReadAccessToURL:readAccessPath!)
Run Code Online (Sandbox Code Playgroud)

唉,当我将allowsReadAccessToURL设置为我的bundle(app /)中的根文件夹时,我只获得了"索引文件",没有加载异步文件.

有没有这方面经验的人?

[更新]我看到我的初始问题描述不够准确.我确实在运行HTML.但我的异步angularJS调用实际上被WebKit框架中的安全监视程序阻止.

在此输入图像描述 在此输入图像描述

uiwebview ios angularjs wkwebview

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

如何让我的应用音频在讲话时很好地中断iPhone音频

我的iOS 7应用程序在必要时发出文本.

我想做的是让用户在我的运行时收听他的音乐或播客(或使用音频的任何其他应用).

预期的行为是,当我的应用说话时,其他音频会混音或低音,然后其他音频会立即在初始级别恢复音量.

我已经尝试了很多方法来实现这个目标,但没有什么是好的,因为我在代码之后列出了我面临的问题.

我目前的实现基于在播放或文本到语音之前创建会话,如下所示:

+ (void)setAudioActive {

    [[self class] setSessionActiveWithMixing:YES];
}
Run Code Online (Sandbox Code Playgroud)

播放/演讲结束后,我将我设置为闲置如下:

+ (void)setAudioIdle {
    [[self class] setSessionActiveWithMixing:NO];
}
Run Code Online (Sandbox Code Playgroud)

核心功能,根据活动参数处理会话设置,如下所示:

+ (void)setSessionActiveWithMixing:(BOOL)active
{
    NSError *error = NULL;
    BOOL     success;

    AVAudioSession *session = [AVAudioSession sharedInstance];

    static NSInteger counter = 0;

    success = [session setActive:NO error:&error];
    if (error) {
        DDLogError(@"startAudioMixAndBackground: session setActive:NO, %@", error.description);
    }
    else {
        counter--; if (counter<0) counter = 0;
    }

    if (active) {
        AVAudioSessionCategoryOptions options = AVAudioSessionCategoryOptionAllowBluetooth
            //|AVAudioSessionCategoryOptionDefaultToSpeaker
            |AVAudioSessionCategoryOptionDuckOthers
        ;


        success = [session setCategory://AVAudioSessionCategoryPlayback
                   AVAudioSessionCategoryPlayAndRecord
                           withOptions: …
Run Code Online (Sandbox Code Playgroud)

bluetooth ios avaudiosession

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

如何让 CAN 总线在 docker 容器内运行?

我成功地对在 Beaglebone black 上运行的 Nodejs 应用程序进行了 docker 化。但现在我想从 docker 容器内访问 CAN,但它不起作用。

\n

请注意,我成功地在主机中配置了 CAN 端口,并且 candump 显示它可以工作。

\n
$ candump can1\n  can1  18FF30D0   [8]  00 00 00 00 00 00 00 00\n  can1  18FF02D0   [4]  00 00 00 00\n  can1  18FF21D0   [3]  00 00 00\n  can1  18FF3CD0   [4]  00 7D 28 7D\n  can1  18FF30D0   [8]  00 03 00 00 00 00 00 00\n  can1  18FF02D0   [4]  00 00 00 00\n
Run Code Online (Sandbox Code Playgroud)\n

我在 Dockerfile 中构建了 socketcan 节点模块,如下所示:

\n
 #If you don't …
Run Code Online (Sandbox Code Playgroud)

can-bus node.js docker beagleboneblack

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

SceneKit - 自定义几何体不显示

我应该看到2个黄色三角形,但我什么也看不见.

class Terrain {

    private class func createGeometry () -> SCNGeometry {

        let sources = [
            SCNGeometrySource(vertices:[
                SCNVector3(x: -1.0, y: -1.0, z:  0.0),
                SCNVector3(x: -1.0, y:  1.0, z:  0.0),
                SCNVector3(x:  1.0, y:  1.0, z:  0.0),
                SCNVector3(x:  1.0, y: -1.0, z:  0.0)], count:4),
            SCNGeometrySource(normals:[
                SCNVector3(x:  0.0, y:  0.0, z: -1.0),
                SCNVector3(x:  0.0, y:  0.0, z: -1.0),
                SCNVector3(x:  0.0, y:  0.0, z: -1.0),
                SCNVector3(x:  0.0, y:  0.0, z: -1.0)], count:4)
        ]

        let elements = [
            SCNGeometryElement(indices: [0, 2, 3, 0, 1, 2], …
Run Code Online (Sandbox Code Playgroud)

scenekit swift scnnode

6
推荐指数
2
解决办法
724
查看次数