我刚刚使用Xcode 8 beta将我的项目从Swift 2.2迁移到Swift 3.0.
我有类似下面的代码(您可以将其粘贴到游乐场):
import Foundation
let datesWithCount: [(Date, Int)] = [(Date(), 1), (Date(), 2), (Date(), 3)]
let dates: [Date] = datesWithCount.sorted {
$0.0 < $1.0
}.prefix(1).map {
return $0.0
}
Run Code Online (Sandbox Code Playgroud)
在Swift 2.2中编译好了.但是,使用Swift 3.0我得到了错误
模糊地使用'前缀'
在Swift 3.0中编译它的唯一方法是将地图拆分为一个单独的行:
let sortedDatesWithCount = datesWithCount.sorted {
$0.0 < $1.0
}.prefix(1)
let mappedDates = sortedDatesWithCount.map {
return $0.0
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,在实际的代码中我NSNotification从map非Dates 返回对象,但错误是相同的.我刚刚Date在这里用来使这个例子变得简单.
有没有办法让这个编译成一个班轮?
更新:为Swift项目创建了一个JIRA.
有没有办法在发布版本中的调试版本和性能测试中运行单元测试,而无需手动选择和运行单独的方案?
我有一个单元测试和一个性能测试方案.在单元测试方案的测试配置中,我选择了调试版本,而对于性能测试方案,我选择了版本构建.如果我单独运行每个方案,我分别得到一个调试版本和一个发布版本.
如果我创建另一个运行这两个方案的方案,那么新方案将拥有自己的构建配置.如果我为这个新方案设置了debug的构建配置,那么我也将获得一个用于我的性能测试的调试版本.
这些工具可用吗?我有一个苹果开发者帐户,我下载了Xcode 9 beta,我从https://developer.apple.com/download/获得.
Xcode 9开发人员工具出来了吗?
我有一个带有RestKit库和CoreData的iOS应用程序.从Xcode8开始,我可以看到比以前更多的日志,其中一个对我没有任何意义.
error: An observer of NSManagedObjectContextDidSaveNotification illegally threw an exception. Objects saved = {
inserted = "{(\n)}";
managedObjectContext = "<_PFWeakReference: 0x600000621560>";
updated = "{(\n ... )}";
}
and exception = [<_PFWeakReference 0x600000621560> valueForUndefinedKey:]: this class is not key value coding-compliant for the key @count. with userInfo = {
NSTargetObjectUserInfoKey = "<_PFWeakReference: 0x600000621560>";
NSUnknownUserInfoKey = "@count";
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能理解的是对managedObjectContext的弱引用(错误上面的内容)使用了错误的键,但我无法弄清楚如何调试它.
与此问题相关的所有NSManagedObjects似乎都是集合.主要来自OneToMany或ManyToMany关系的NSSet.
然后我发现了这个Apple文档:
除@count外,所有集合运算符都需要集合运算符右侧的键路径.
但是,我看不到当前使用此密钥的任何谓词或CoreData请求.
我重新生成了所有的NSManagedObject模型,并仔细检查它们之间的所有反向关系,但它没有帮助我摆脱它.
这个应用程序运行正常,但我找不到任何解决方案来删除此警告.
所以我刚刚更新到Xcode 8并将我的Swift 2.3代码转换为Swift 3,而Swift 3只是将所有转换NSDate为Foundation.Date
我有一个extensionfor NSDate,现在叫Foundation.Date,它看起来像这样:
extension NSDate
{
var firstDayOfTheMonth:NSDate
{
var date: NSDate?
NSCalendar.currentCalendar().rangeOfUnit(.Month, startDate:&date , interval: nil, forDate: self)
return date!
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 3将其转换为:
extension Foundation.Date
{
var firstDayOfTheMonth:Foundation.Date
{
var date: Foundation.Date?
(Calendar.current as NSCalendar).range(of: .month, start:&date , interval: nil, for: self)
return date!
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是Xcode建议我这样做:Cannot convert value of type 'Date?' to expected argument type 'NSDate?'并放弃&.
所以,我改变它,现在的功能如下:
extension Foundation.Date
{
var …Run Code Online (Sandbox Code Playgroud) 我的应用程序工作正常,在UITableView中显示来自HTML文件的行,但在更新一些POD后,应用程序在启动期间崩溃,我收到此错误,XCode没有显示发生此错误的确切行或函数:
[CATransaction synchronize] called within transaction
Run Code Online (Sandbox Code Playgroud)
我更新的唯一内容是HTMLKit.
我在SO和其他地方搜索过.我只发现这个答案的旧版本似乎不再起作用,以及大量其他在最新版本中甚至没有相关的东西.
简而言之,我们有一位开发人员向我们提供IPA,他们不想加入我们的开发团队.我告诉他给我们发一份未签名的IPA,但我们无法根据我们的旧流程弄明白.
有没有人这样做过,你介意与世界分享你的方法吗?
谢谢!
你如何使用Xcode 8和Swift 3在macOS 10.12中使用Copy字符串Clipboard?我找不到任何参考资料.
我目前正在更新要使用的项目image literals,以享受非可选图像的好处.该项目正在导入各种框架,框架包含图像.
在框架中,我们必须声明一个扩展UIImage来覆盖初始化,因为它正在寻找错误包中的图像.我们做了类似的事情:
extension UIImage {
convenience init?(framework_named imageName: String) {
let bundle = Bundle(for: ClassNameInFramework.self)
self.init(named: imageName, in: bundle, compatibleWith: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
我也想在框架中使用图像文字,但像以前一样,文字正在为图像寻找错误的包并且应用程序崩溃.
有谁知道,如何指定要查找图像的包的图像文字?
我有一个项目
MyAppMyKit.frameworkMyExtension我想使用的共享代码MyKit的MyExtension,但是当我联系了,我得到的警告
ld: warning: linking against a dylib which is not safe for use in application extensions: /Users/me/Library/Developer/Xcode/DerivedData/MyApp-dnztzmxjghjlsteetlokzhjtjqkm/Build/Products/Debug-iphonesimulator/MyKit.framework/MyKit
Run Code Online (Sandbox Code Playgroud)
要配置应用程序扩展目标以使用嵌入式框架,请将目标的"仅限应用程序扩展安全API"构建设置设置为"是".如果不这样做,Xcode会提醒您这样做,方法是显示警告"链接到dylib并不安全,无法在应用程序扩展中使用".
默认情况下正确设置.我可以通过将"仅限App-Extension-Safe API"设置为NO来消除警告,但这可能会导致某些应用程序被拒绝.
该框架不使用应用程序扩展中不允许的任何API.实际上,在示例项目中,您将看到MyKit.framework仅将消息记录到控制台.
从应用程序扩展链接到嵌入式框架的正确方法是什么,以避免这种错误?
xcode8 ×10
ios ×5
swift3 ×4
xcode ×4
beta ×1
core-data ×1
crash ×1
date ×1
ipa ×1
macos-sierra ×1
nsdate ×1
nspasteboard ×1
restkit ×1
swift ×1
uiimage ×1
unit-testing ×1
xcode-scheme ×1
xctest ×1