我在Xcode中遇到了一个问题,错误“源套件服务终止”正在弹出,所有语法高亮显示和代码完成都在Swift中消失了。我该如何解决这个问题?
下面是一个示例图像:
我在Xcode中遇到了一个问题,错误“源套件服务终止”正在弹出,所有语法高亮显示和代码完成都在Swift中消失了。我该如何解决这个问题?
下面是一个示例图像:
当前回答
今天有同样的问题,事情是与println,我只是尝试了旧的NSLog风格打印一个值:
// something like this
println("value = %@", valueObj)
我们应该如何在swift中组成字符串的方式已经从printf风格演变为内联风格,所以现在你可以像这样将你的值嵌入到格式字符串中:
"Here goes \(YOUR_VARIABLE)"
所以,对于上面的例子,解决方案是:
println("value =\(valueObj)")
其他回答
当此错误开始弹出时,只需注释掉您编写的最后/最近的一段代码并等待一段时间。语法高亮显示应该会重新出现。这就是我解决这个问题的方法。
func someFunc() -> (Int?, Int?, Int?) {
var retVal1:Int? = nil
var retVal2:Int? = nil
var retVal3:Int? = nil
//some other code
//commenting out the line below helped me
//(retVal1, retVal2, retVal3)
return (retVal1, retVal2, retVal3)
}
为了解决这个问题,你的Swift代码可能会有一些奇怪的问题。例如,因为您正在复制和粘贴,所以有多个iboutlet的定义。通常这只是一个无法处理的语法错误。
在Xcode 6 Beta 3中,我每隔几秒钟就会遇到这个问题,甚至在全新的项目中,这个问题仍然存在。我将部署目标从8.0更改为7.1,它已经停止。
今天有同样的问题,事情是与println,我只是尝试了旧的NSLog风格打印一个值:
// something like this
println("value = %@", valueObj)
我们应该如何在swift中组成字符串的方式已经从printf风格演变为内联风格,所以现在你可以像这样将你的值嵌入到格式字符串中:
"Here goes \(YOUR_VARIABLE)"
所以,对于上面的例子,解决方案是:
println("value =\(valueObj)")
Swift试图动态地而不是静态地找出所有内容的类型,但当它处理复杂类型(如链式过滤器、映射、flatMap调用)或大型字典时,这可能需要付出巨大的努力。有时你需要把它们分开,以便编译器更容易分析。这个问题的一个表亲是“太复杂而不能及时评估”的错误。想象一下,有几个几乎太复杂而无法及时评估的项目:它们一起变成了资源占用者。
试着找到所有您创建动态字典或使用无类型调用链的地方。尝试更具体地输入,特别是在变量声明处。
一些简单的例子:
字典
Bad:
let myDict = [ /* bunch of different things */ ]
好:
let myDict: [String: AnyObject] = [ /* bunch of different things */ ]
最好的:
let myDict: [String: SpecificType] = [ /* bunch of similar things */ ]
映射
Bad:
let filteredUserIds = users.filter({ user in user.enabled })
.flatMap { user in user.name != nil ? return user.id : return nil }
好:
let filteredUserIds: [Int] = users.filter({ user in user.enabled })
.flatMap { user in user.name != nil ? return user.id : return nil }
最好的:
let enabledUsers: [User] = users.filter { user in user.enabled }
let filteredUserIds: [Int] = enabledUsers.flatMap {
user in user.name != nil ? return user.id : return nil
}
好处还包括额外的检查代码,因为您总是会得到预期的类型或编译器错误。缺点是它开始看起来有点像Java。
当然,随着项目的发展,这个问题首先会积累起来。小型Swift项目总是很快。所以可能有很多工作要做。经验告诉我们哪些表达是复杂且耗时的。如果你能对这些事情进行基准测试,那就太好了。