小编J. *_*coe的帖子

Xcode的"TOOLCHAINS"设置在哪里?

我将我的项目从Swift 2.2升级到2.3(Xcode 7到8),并在一台Mac上提交了所有内容.当我从其他Mac上的git中取出并构建时,我得到:

Warning: target specifies SWIFT_VERSION = '2.3', but it is overridden by TOOLCHAINS = 'com.apple.dt.toolchain.XcodeDefault'
Run Code Online (Sandbox Code Playgroud)

我在任何文件中都找不到任何名为"TOOLCHAINS"的东西.这个警告意味着什么?

xcode swift

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

[String]的Swift扩展名?

我正在尝试编写一个扩展方法[String].

看起来你不能[String]直接扩展("Type'Element'约束到非协议类型'String'"),虽然我遇到了这个伎俩:

protocol StringType { }
extension String: StringType { }
Run Code Online (Sandbox Code Playgroud)

但我还是不能让Swift类型的系统满意:

extension Array where Element: StringType {
    // ["a","b","c","d","e"] -> "a, b, c, d, or e".
    func joinWithCommas() -> String {
        switch count {
        case 0, 1, 2:
            return joinWithSeparator(" or ")
        default:
            return dropLast(1).joinWithSeparator(", ") + ", or " + last!
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

joinWithSeparator电话是"暧昧".我已经尝试了我能想到的一切,比如使用(self as! [String])(以及一些类似的变体),但似乎没有任何效果.

如何让Swift编译器满意呢?

swift

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

为什么Swift nil-coalescing返回一个Optional?

首先,我尝试映射a [String?],得到一个[String]:

$ xcrun swift
Welcome to Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.30). Type :help for assistance.
  1> import Foundation
  2> let j: [String?] = ["a", nil]
j: [String?] = 2 values {
  [0] = "a"
  [1] = nil
}
  3> j.map {$0 ?? ""}
$R0: [String] = 2 values {
  [0] = "a"
  [1] = ""
}
Run Code Online (Sandbox Code Playgroud)

这对我来说非常有意义.我没有合并String?,我得到了一个String.但是[AnyObject?],有一些奇怪的事情发生:

  4> let k: [AnyObject?] = ["a", nil]
k: [AnyObject?] = 2 values …
Run Code Online (Sandbox Code Playgroud)

type-inference swift

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

结构的Swift动态类型检查?

我对Swift中的动态类型检查感到困惑.

具体来说,我有一个怪异的情况,我想在本质上写一个(或找到)一个函数:

func isInstanceOf(obj: Any, type: Any.Type) -> Bool
Run Code Online (Sandbox Code Playgroud)

在Objective-C中,这是isKindOfClass,但这不起作用,因为Any.Type包括Swift结构,它不是类(更少的NSObject子类).

我不能is在这里使用Swift ,因为这需要硬编码类型.

我无法使用,obj.dynamicType == type因为这会忽略子类.

斯威夫特书似乎表明,该信息将丢失,且没有可用的结构在所有:

类具有结构不具备的附加功能:

...

  • 类型转换使您可以在运行时检查和解释类实例的类型.

(在Type Casting一章中,它说"Swift中的类型转换是用is和as运算符实现的",所以它似乎是一个比其他语言更广泛的"类型转换"定义.)

但是,不能使用is/ as不能使用结构,因为你可以将字符串和Ints放入一个[Any],然后将它们拉出来,并使用is Stringis Int弄清楚它们是什么.Swift Book的Type Casting章节正是这样做的!

有什么东西isKindOfClass和任何Swift实例一样强大吗?这些信息仍然必须在运行时存在,对吧?

struct dynamic swift

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

一个NSWindow到底是什么时候圆角?

(我发现了几个类似的问题,但没有完全相同.有些问题比有问题的操作系统要老.有些人做了疯狂的事情,比如完全自定义的窗口.我找不到有关如何使普通窗口正常工作的说明.)

从OS X Lion开始,标准窗口有圆角.不幸的是,我无法在我的应用程序中复制它.当NSView被推到NSWindow的角落时,有时它会被限制在圆形NSWindow上,有时它会逃脱并形成一个方角.

我还没能弄清楚一个模式.

  • 即使是"绘制背景"的NSView也有时会强迫方角,所以不是这样.
  • 我的自定义NSViews制作方角(我负责检查我在NSWindow中的位置,如果我靠近边缘那么剪裁到它?),但是一些标准的Cocoa控件也是这样做的.

例如,创建一个新的Cocoa项目,在主NSWindow中放置(滚动)NSTableView或NSTextView,并添加布局约束,使其跟随窗口的边缘.底角是方形的!相比之下,Finder有一个(看起来像)NSTableView,就在窗户的底角,它是圆形的.

如何制作一个普通的NSWindow,底部有适当的圆角?

macos cocoa nswindow

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

如何启用MKMapView 3D视图?

我在一个窗口中有一个MKMapView,并且pitchEnabled是真的(我已经在调试器中证实了这一点).指南针中间的"3D"东西是灰色的,点击或拖动它什么都不做.选项 - 拖动地图(就像我在Maps.app中所做的那样)也没有做任何事情.

根据我对文档的解释,设置pitchEnabled应该让我使用3D视图,就像Maps.app那样.我错了吗?我还需要做些什么来让我的用户获得3D地图视图吗?

macos mapkit

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

如何使用 NSDateFormatter 的 isLenient 选项?

我似乎无法在 StackOverflow 或网络上的其他地方找到有关此标志的任何信息。苹果自己的文档只说:

如果格式化程序设置为宽松,则在解析字符串时,它会使用启发式方法来猜测预期的日期。与任何猜测一样,它可能会得到错误的结果日期(即,不是预期的日期)。

也许我误解了它应该如何工作,但我根本无法让它工作。我的猜测是这样的(解析日期相对容易):

> import Foundation
> let df = DateFormatter()
> df.isLenient = true
> df.date(from: "12:00 1/1/2001")
$R0: Date? = nil
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,我都没有。

我还看到有一个doesRelativeDateFormatting标志,声称支持诸如“今天”和“明天”之类的短语,但这似乎也没有任何作用:

> df.doesRelativeDateFormatting = true
> df.date(from: "today")
$R1: Date? = nil
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

foundation nsdateformatter swift swift3

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

2016年,你如何获得文件的Finder"Kind"?

这个答案说要使用过去运行良好的LSCopyKindStringForURL(),但它在OS X v10.11中被标记为"已弃用".

API文档中没有提到它被弃用的原因.我根本没有在OS X 10.11发行说明中看到任何启动服务API更改.

你现在应该如何获得Finder种类的文件?

macos cocoa launch-services osx-elcapitan

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