我用字符串选项(String?)创建了一个swift类,并在不同的swift文件中实例化了这个类,并得到了编译错误.当我在同一个文件中实例化该类时,没有错误.我在做什么不对劲?我仔细检查了行为,即使使用swift文档中给出的类定义,这种行为也是一致的:
class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
}
var item = ShoppingListItem()
Run Code Online (Sandbox Code Playgroud)
摘录自:Apple Inc."The Swift Programming Language."iBooks.https://itun.es/in/jEUH0.l
如果var item = ShoppingListItem()
在做appDelegate.swift
,从功能上application:didFinishLaunchingWithOptions
我们得到的错误:
<class> cannot be initialised because it has no accessible initializers
Run Code Online (Sandbox Code Playgroud)
OTOH,如果我们在类声明结束后立即保持实例化,就没有问题.
编辑:此问题不是showstopper,当前的默认初始化行为似乎不一致或我需要更好地理解它
Hig*_*asy 32
有可能是Swift编译器和访问控制的问题(不指向手指,只是尝试进行故障排除).向类中添加显式初始值设定项,看看是否有效:
class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
init() { }
}
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,则将类与初始化程序一起设置为public
public class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
public init() { }
}
Run Code Online (Sandbox Code Playgroud)
zrs*_*slv 17
在这种情况下,为所有成员提供默认值
var name: String? = nil
Run Code Online (Sandbox Code Playgroud)
修复错误.
归档时间: |
|
查看次数: |
17663 次 |
最近记录: |