【问题标题】:Swift 2 Playground(Xcode 7 Beta 4) - Multiple types in an array only work when UIKit imported?Swift 2 Playground(Xcode 7 Beta 4) - 数组中的多种类型仅在导入 UIKit 时有效?
【发布时间】:2015-10-24 16:08:49
【问题描述】:

我在 Playground 中试用 Swift 数组时,发现了这种奇怪的行为

下面的代码可以正常工作。

import UIKit

var array = [1,2,3,"Booyaa"]

但是,一旦我从 Playground 中删除“import UIKit”行,我就会收到以下错误

游乐场执行失败:/var/folders/tx/tvyf1r314wj9371f491qx8wjbqbgsr/T/./lldb/11708/playground71.swift:2:17:错误:“Int”不可转换为“IntegerLiteralConvertible” var array = [1, 2, 3, "Booyaa"]

为什么会这样?

【问题讨论】:

  • swift2 真是让人头疼,男孩!
  • 不,不需要。需要import Foundation
  • @longpham 你能详细解释一下吗?

标签: swift2 xcode7-beta4


【解决方案1】:

正确答案在这里,针对我在 Apple Dev 论坛上发布的一个相同问题 => https://forums.developer.apple.com/message/35389

这是因为 Swift 数组只能包含相同的对象 类型。你的数组有整数和一个字符串。当你导入 UIKit 时 数组中的对象成为 NSObject 类型的对象 Swift 的推理引擎。要亲自查看,请在 数组定义,你会看到类型为 Swift.array

import UIKit  
var array = [1,2,3,"Swift2"]  
array.dynamicType 

【讨论】:

    【解决方案2】:

    对于高级编程语言,这需要lexical structure 来检查和比较复杂类型作为您的问题。它是在Foundation 框架中实现的。

    UIKit 实现了一些UI api 为UIView 等...在UIKit 框架中需要使用Foundation 框架。

    顺便说一句:Foundation 框架是核心 Swift, Objective-C 语言。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多