在将我的框架迁移到Xcode 10 beta(10L176w)之后,我开始收到类似的警告:
将架构arm64映射到x86_64.确保为iOS模拟器平台正确配置了此目标的体系结构和有效体系结构构建设置.
......和:
将架构armv7映射到i386.确保为iOS模拟器平台正确配置了此目标的体系结构和有效体系结构构建设置.
尽管有这些警告,构建和单元测试都通过Ok.我正在使用Swift 4.2.
这些警告仍然是什么?
迁移到XCode 7.1后,我不能在iOS和tvOS平台上使用playground.只有OS X有效.最简单的操场代码会产生错误消息:
无法找到所选运行目标的执行服务
我怀疑它与XCode没有找到合适的模拟器,但我不知道在哪里以及如何配置它.
我在现有项目中尝试了游乐场,以及刚刚在启动画面中新创建的游乐场.
什么想法可能是错的?
更新:
检查控制台提供了更多的洞察力,但仍不清楚如何修复:
24/10/2015 10:16:10,193 lsd[279]: LaunchServices: Could not store lsd-identifiers file at /private/var/db/lsd/com.apple.lsdschemes.plist
24/10/2015 10:16:10,212 com.apple.usbmuxd[82]: LOCKDOWN_V2_BONJOUR_SERVICE_NAME is _apple-mobdev2._tcp,8de107c0
24/10/2015 10:16:10,248 Xcode[819]: DeveloperPortal: Using pre-existing current store at URL (file:///Users/courteouselk/Library/Developer/Xcode/DeveloperPortal%207.1.db).
24/10/2015 10:16:10,381 com.apple.CoreSimulator.CoreSimulatorService[461]: Requested phone is is not available for pairing. Assuming it has the capability.
24/10/2015 10:16:10,384 com.apple.CoreSimulator.CoreSimulatorService[461]: Requested phone is is not available for pairing. Assuming it has the capability.
24/10/2015 10:16:12,929 com.apple.usbmuxd[82]: _SendAttachNotification Device 80:ea:96:04:a5:da@fe80::82ea:96ff:fe04:a5da._apple-mobdev2._tcp.local. has already appeared on interface …
Run Code Online (Sandbox Code Playgroud) 有没有办法做类似的东西break
从一个for
循环,但在阵列的reduce()
功能?
例如,考虑我有一个数组:
var flags = [false, false, true, false, false, true, false]
Run Code Online (Sandbox Code Playgroud)
......我需要累积||
起来.使用for
循环,可以执行以下操作:
var resultByFor = false
for flag in flags {
if flag {
resultByFor = true
break
}
}
Run Code Online (Sandbox Code Playgroud)
...即在我们获得第一个时刻,true
没有必要完成循环,因为结果true
无论如何.
使用reduce()
,以下看起来非常整洁:
var resultByReduce = flags.reduce(false) { $0 || $1 }
Run Code Online (Sandbox Code Playgroud)
但是,对于示例中给出的数组,for
循环体仅执行3次,而reduce()
函数闭包将被触发完整7次.
有没有办法reduce()
在第3次迭代中拯救(就像它可以在for
循环中完成)?
[UPD]
我过分简化了这个问题.原来的问题更像这样:
extension Int {
func isWholeMultiplesOf(base: Int) -> Bool {
return …
Run Code Online (Sandbox Code Playgroud) Swift 3附带SE-0057实现,除其他外,意味着:
默认情况下,参数化Objective-C类的扩展不能以任何方式引用类型参数.例如:
Run Code Online (Sandbox Code Playgroud)extension MySet { func someNewMethod(x: T) { ... } // error: cannot use `T`. }
... MySet
在ObjC中声明的地方@interface MySet<T : id<NSCopying>> : NSObject
.
一切都很清楚(甚至还有某种解决方法).但是,尽管我没有使用我想要扩展的ObjC类中的任何类型参数,但以下内容仍无法编译.我只使用另一个不相关的Swift类作为扩展方法的返回参数:
class Foo { }
struct Bar { }
extension MySet {
func foo() -> Foo { return Foo() } // Both produce: Extension of a generic
func bar() -> Bar { return Bar() } // Objective-C class cannot access the
} // class's generic parameters at runtime
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?或者我错过了什么?
从Swift 1.2(目前可用作测试版)开始,Apple推出了Set
集合类型.
说,我有一套像:
var set = Set<Int>(arrayLiteral: 1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
现在我想得到一个随机元素.问题是怎么样的? Set
没有提供subscript(Int)
像Array
.相反,它有subscript(SetIndex<T>)
.但首先,SetIndex<T>
没有可访问的初始值设定项(因此,我不能只创建一个带有我需要的偏移量的索引),其次,即使我可以获取set(var startIndex = set.startIndex
)中第一个元素的索引,那么我可以得到的唯一方法到第N个索引是通过连续调用successor()
.
因此,我现在只能看到2个选项,既丑陋又昂贵:
var array = [Int](set)
)并使用其下标(完全接受Int
); 要么successor()
方法链以获取第N个索引,然后通过set的下标读取相应的元素.我还想念别的吗?
如果我想枚举一个数组(比如说map()
我需要将元素的索引与其值一起使用的enumerate()
函数),我可以使用函数.例如:
import Foundation
let array: [Double] = [1, 2, 3, 4]
let powersArray = array.enumerate().map() {
pow($0.element, Double($0.index))
}
print("array == \(array)")
print("powersArray == \(powersArray)")
// array == [1.0, 2.0, 3.0, 4.0]
// powersArray == [1.0, 2.0, 9.0, 64.0] <- As expected
Run Code Online (Sandbox Code Playgroud)
现在,如果我想使用数组中的一些子序列,我可以使用a slice
,它将允许我使用与我在原始数组中使用的相同的索引(这正是我想要的情况,如果我会subscript
在for
循环中使用访问器).例如:
let range = 1..<(array.count - 1)
let slice = array[range]
var powersSlice = [Double]()
for index in slice.indices {
powersSlice.append(pow(slice[index], Double(index)))
}
print("powersSlice == \(powersSlice)")
// powersSlice …
Run Code Online (Sandbox Code Playgroud) 有没有办法定义依赖关系,Package.swift
这将指向某个分支最新提交,甚至只是一个特定的提交ID(就像迦太基可能的那样)?
用例就是,假设我有一个库仓库,我想分支出来并进行一些更改,然后能够在依赖项目中测试它们.
我WKWebView
用来在我的应用程序中加载一些链接.我想禁用几乎所有网页上出现的所有恼人的JavaScript横幅.是否有一个简单的功能可以做到这一点?
如果我想知道哪个或哪些节点覆盖了场景的某个点,我可以做scene.nodeAtPoint(point)
或者scene.nodesAtPoint(point)
.有没有一种有效的方法可以用圆圈做类似的事情?这是为了能够找到位置与给定点相距一定距离的所有节点.
我需要这个能够更好地处理用户点击.场景相当稀少(没有太多用户活跃的精灵),所以没有必要要求用户非常精确地点击.我想在水龙头的坐标周围使用某种公差,并检测距离足够接近位置的节点.
到目前为止,我最好的想法是做nodeAtPoint()
几次:在水龙头的位置,然后在它的各种偏移处(例如,向上,向右,严格,......,左上).
除了明显的原因(例如,由于设计原因,我不希望某些方法或属性,继承树中的任何东西被覆盖)外,是否还有其他原因需要final
在Swift中进行标记?
例如,是否有性能方面的考虑?我记得在某处读过SO答案,暗示了一些建议。
swift ×10
ios ×2
xcode ×2
array-reduce ×1
arrays ×1
break ×1
comments ×1
enumerate ×1
generics ×1
objective-c ×1
parameters ×1
set ×1
slice ×1
sprite-kit ×1
swift2 ×1
swift3 ×1
wkwebview ×1
xcode10 ×1
xcode7 ×1