草庐IT

initialization

全部标签

ios - Swift - NSIndex forRow inSection Initializer

我有以下代码:varpath=NSIndexPath(forRow:index,inSection:0);我收到一条编译器警告:调用中的额外参数“inSection”为什么?我在这里的文档中看到了初始化程序:https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSIndexPath_UIKitAdditions/index.html#//apple_ref/occ/clm/NSIndexPath/indexPathForRow:inSection:我导入了UIKit,甚至尝试做类似的事情:varpa

swift - Swift 中的阶段 1 和阶段 2 初始化

这是AppleSwift文档的副本:Assoonasallpropertiesofthesuperclasshaveaninitialvalue,itsmemoryisconsideredfullyinitialized,andPhase1iscomplete.Thesuperclass’sdesignatedinitializernowhasanopportunitytocustomizetheinstancefurther(althoughitdoesnothaveto).Oncethesuperclass’sdesignatedinitializerisfinished,thes

ios - 在 swift 中处理 UIView 公共(public)初始化

像UIView这样的一些特殊类有不止一个指定的初始化器。在Objective-X中,我们可以将公共(public)初始化分解为一个单独的函数-(id)initWithCoder:(NSCoder*)aDecoder{if(self=[superinitWithCoder:aDecoder]){[selfinitialize];}returnself;}-(id)initWithFrame:(CGRect)frame{if(self=[superinitWithFrame:frame]){[selfinitialize];}returnself;}在Swift中,这不再是可能的,因为以下

ios - init! 的目的是什么?失败的初始化器?

AppleSwift编程语言指南提到了init!初始化程序,但不提供任何示例。(搜索初始化!inthispage)我了解使用init?声明的普通可失败初始化程序,但我无法理解其他版本的需要。需要它做什么?有人可以举个例子吗? 最佳答案 这有两个目的:导入Swift不知道的CocoaAPI时。如果Swift不知道初始化器是否可以返回nil,它会用!这样开发人员就知道那里可能隐藏着一个nil,而无需强制开发人员在实际上没有理由的情况下测试nil。出于同样的原因,在其他上下文中使用了隐式解包选项(在某些情况下,您可能愿意牺牲编译时安全性来

swift - 在 Swift 中在哪里初始化?

我有一个关于Swift中的初始化的非常普遍的问题。与ObjectiveC不同,现在可以在函数外的声明中直接调用init():例如classViewController:UIViewController{letmyView:UIView=UIView()overridefuncviewDidLoad(){super.viewDidLoad()myView.frame=getFrame()myView.backgroundColor=UIColor.redColor()self.view.addSubview(myView)}funcgetFrame()->CGRect{returnCGR

swift - 初始化参数中的 self

我想像这样在初始化参数中使用Self:classA{publicinit(finishBlock:((_operation:Self)->Void)?=nil){...}}我知道我可以在这个地方使用“A”,但我想实现这一点,如果某个类继承自A,那么它的初始化器将知道操作,因为它是类类型,而不仅仅是A。例如,如果我写道:classB:A{publicinit(finishBlock:((_operation:Self)->Void)?=nil){...}publicfuncfooOnlyInB(){}}然后我可以使用:letb=B{(operation)inoperation.fooOn

ios - 如何桥接 Objective-C initWithError : method into Swift

我有一个在Objective-C中定义的类,其初始化程序是-initWithError:(由于依赖外部资源,初始化程序可能会失败)。我希望它在init()throws时桥接到Swift。继承自NSObject的常规初始化程序-init可以标记为不可用,因为我不想使用它。在Objective-C中,我有:@interfaceFoo:NSObject-(instancetype_Nullable)initWithError:(NSError**)error;@end当然,这在Objective-C中工作得很好。在Swift中,-initWithError被桥接为init(error:())

快速处理 NSData 初始化失败

我有以下行:letjsonResults=NSData(contentsOfURL:Fetcher.URLforLicenseInfo())这编译和执行都很好,但是如果NSData的初始化失败,我稍后会在代码中得到一个异常。我试图添加另一行:ifjsonResults!=nil{///blah,blah...但随后编译器提示“无法使用参数列表类型'(NSData,NilLiteralConvertible)调用'!='”编译器不应该将NSData初始化程序返回类型识别为可选类型吗? 最佳答案 检查数据的长度:if(data.leng

ios - swift 核心数据 : error: Failed to call designated initializer on NSManagedObject class 'NSManagedObject'

我正在使用核心数据在vc1中保存一个类别,并想将列表属性添加到vc2中的列表中。我的数据模型是许多列表属性的一个类别。我在vc1中添加这样的类别:funccreateNewCategory(){varcategory:NSManagedObject!=NSEntityDescription.insertNewObjectForEntityForName("Category",inManagedObjectContext:self.context)asNSManagedObjectcategory.setValue(self.categoryTextField.text,forKey:"

swift - 一次初始化 4 个 CGFloats

我正在尝试在Swift中对UIColor使用getRed(green:blue:alpha:)函数。为此,我需要4个CGFloat变量(r、g、b、a)。目前,为此,我需要输入以下代码:varr:CGFloat=0varg:CGFloat=0varb:CGFloat=0vara:CGFloat=0有没有更简单的方法来写这个,可能更简洁? 最佳答案 是的,您可以使用元组来声明和初始化它们:var(a:CGFloat,r:CGFloat,g:CGFloat,b:CGFloat)=(0,0,0,0)