标签: xcode8

使用Swift 3"模糊使用前缀"编译器错误

我刚刚使用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)

顺便说一句,在实际的代码中我NSNotificationmapDates 返回对象,但错误是相同的.我刚刚Date在这里用来使这个例子变得简单.

有没有办法让这个编译成一个班轮?

更新:为Swift项目创建了一个JIRA.

swift3 xcode8

9
推荐指数
1
解决办法
2726
查看次数

测试方案的不同构建配置

有没有办法在发布版本中的调试版本和性能测试中运行单元测试,而无需手动选择和运行单独的方案?

我有一个单元测试和一个性能测试方案.在单元测试方案的测试配置中,我选择了调试版本,而对于性能测试方案,我选择了版本构建.如果我单独运行每个方案,我分别得到一个调试版本和一个发布版本.

如果我创建另一个运行这两个方案的方案,那么新方案将拥有自己的构建配置.如果我为这个新方案设置了debug的构建配置,那么我也将获得一个用于我的性能测试的调试版本.

xcode unit-testing xcode-scheme xctest xcode8

9
推荐指数
1
解决办法
2786
查看次数

如何安装xCode命令行工具?如何安装Xcode 9 beta和xCode 8?

这些工具可用吗?我有一个苹果开发者帐户,我下载了Xcode 9 beta,我从https://developer.apple.com/download/获得.

Xcode 9开发人员工具出来了吗?

beta xcode xcode8

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

NSManageObjectContext - 类不是键@count的键值编码兼容

我有一个带有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模型,并仔细检查它们之间的所有反向关系,但它没有帮助我摆脱它.

这个应用程序运行正常,但我找不到任何解决方案来删除此警告.

core-data ios restkit xcode8

9
推荐指数
1
解决办法
1050
查看次数

从Swift 2.3到Swift 3转换的NSDate

所以我刚刚更新到Xcode 8并将我的Swift 2.3代码转换为Swift 3,而Swift 3只是将所有转换NSDateFoundation.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)

date nsdate swift3 xcode8

9
推荐指数
1
解决办法
8450
查看次数

在事务中调用的CATransaction同步

我的应用程序工作正常,在UITableView中显示来自HTML文件的行,但在更新一些POD后,应用程序在启动期间崩溃,我收到此错误,XCode没有显示发生此错误的确切行或函数:

[CATransaction synchronize] called within transaction
Run Code Online (Sandbox Code Playgroud)

我更新的唯一内容是HTMLKit.

crash ios swift xcode8

9
推荐指数
0
解决办法
2371
查看次数

如何在不登录Xcode 8的情况下构建IPA

我在SO和其他地方搜索过.我只发现这个答案的旧版本似乎不再起作用,以及大量其他在最新版本中甚至没有相关的东西.

简而言之,我们有一位开发人员向我们提供IPA,他们不想加入我们的开发团队.我告诉他给我们发一份未签名的IPA,但我们无法根据我们的旧流程弄明白.

有没有人这样做过,你介意与世界分享你的方法吗?

谢谢!

xcode ios ipa xcode8

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

Swift 3将字符串复制到剪贴板

你如何使用Xcode 8和Swift 3在macOS 10.12中使用Copy字符串Clipboard?我找不到任何参考资料.

nspasteboard swift3 macos-sierra xcode8

9
推荐指数
2
解决办法
3835
查看次数

Xcode8:在框架中使用图像文字

我目前正在更新要使用的项目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)

我也想在框架中使用图像文字,但像以前一样,文字正在为图像寻找错误的包并且应用程序崩溃.

有谁知道,如何指定要查找图像的包的图像文字?

uiimage ios swift3 xcode8

9
推荐指数
1
解决办法
2539
查看次数

从应用程序扩展链接到嵌入式框架

我有一个项目

  • 一个应用目标: MyApp
  • 一个嵌入式框架目标: MyKit.framework
  • 一个应用扩展目标: MyExtension

这是一个示例项目.

我想使用的共享代码MyKitMyExtension,但是当我联系了,我得到的警告

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)

Apple的文档说

要配置应用程序扩展目标以使用嵌入式框架,请将目标的"仅限应用程序扩展安全API"构建设置设置为"是".如果不这样做,Xcode会提醒您这样做,方法是显示警告"链接到dylib并不安全,无法在应用程序扩展中使用".

默认情况下正确设置.我可以通过将"仅限App-Extension-Safe API"设置为NO来消除警告,但这可能会导致某些应用程序被拒绝.

该框架不使用应用程序扩展中不允许的任何API.实际上,在示例项目中,您将看到MyKit.framework仅将消息记录到控制台.

从应用程序扩展链接到嵌入式框架的正确方法是什么,以避免这种错误?

xcode ios ios-frameworks ios-app-extension xcode8

9
推荐指数
1
解决办法
4587
查看次数