草庐IT

swift - Swift 中的类内部协议(protocol)

如何在Swift中实现类内部协议(protocol)?问题是classC{privateprotocolP{funcaFunction()}privateclassD:P{funcaFunction(){//...}}}导致错误Declarationisonlyvalidatfilescope有什么绕过这个问题的想法吗?排除:我不引用class-onlyprotocols,这当然是可能的。 最佳答案 swift中的访问控制是基于文件的。我不认为您可以在类中定义协议(protocol),但可以将其包含在同一文档中。privatepro

swift - 将具有字符串和 NSImage 属性的类导出到文件

我有一个类,我希望能够将其打开并导出到文件中。它不需要编辑-这只是与我的应用程序的其他用户共享部分对象CoreData数据库的一种方式,所以我认为我不需要子类化NSDocument的复杂性。该类非常基础,具有两个属性String和一个引用应用沙箱中图像的NSImage的文件名。最初,我想到了使用文档包,基本上是一个包含图像的文件夹(如果需要)和一个包含字符串和图像文件名的plist。现在,我倾向于创建一个仅用于导出和导入的类,它使用NSCoding将图像和字符串保存到一个文件中。以下是我不确定的地方:这是个好主意吗?我在这里遗漏了什么吗?我可以将具有NSImage和String属性的对

ios - Swift 中的类初始化

当我像这样创建两个类时:classExample{}classOtherExample{init(){println("created")}}varinstance=Example()varotherInstance=OtherExample()两者似乎都创建了可用的实例,所以我想知道如果您不提供init方法,但您像上面那样进行初始化,那么Swift有什么区别?我确实认为它可能会自动调用父类(superclass)init,但是由于这两个对象都不是从NSObject继承的,所以它们没有父类(superclass),对吗?!在otherExample中是否还需要类super.init()

swift - 在 swift 上初始化一个带参数的类

这个问题在这里已经有了答案:ErrorinSwiftclass:Propertynotinitializedatsuper.initcall(12个答案)关闭5年前。我正在尝试在Swift中使用参数初始化一个类。我希望能够将数组传递给类。类似于lettest=MyTestClass(data)。代码:init(data:[CGFloat]){super.init(nibName:"Test",bundle:nil)self.data=data}requiredinit?(coderdecoder:NSCoder){super.init(nibName:"Test",bundle:nil

ios - 符合 Codable 协议(protocol)的类因 encodeWithCoder : unrecognized selector sent to instance 而失败

我知道有几个与此类似的问题,它们往往都围绕着未正确遵守协议(protocol)的类展开,但这不应该是这里的直接问题。以下是目前给我这个问题的代码的浓缩版:enumBinary:Int{casea=0caseb=1casec=9}finalclassMyClass:NSCoder{varstring:String?vardate:Date?varbinary:Binary=.coverrideinit(){}enumCodingKeys:CodingKey{casestring,date,binary}}extensionMyClass:Codable{convenienceinit(f

swift - 如何将 Swift Cocoapod 中的类导入到 Swift 项目中?

我用Swift语言制作了自己的pod(包含Swift语言中的类)。此广告连播已发布。我创建了新项目并创建了pod(通过podinit)使用pod名称和版本以及use_frameworks!行编辑它在podinstall之后它被下载了。所以我可以打开.xcworkspace并在项目的文件中查看我的pod。但是我无法在我的项目中导入需要的类。如何做到这一点? 最佳答案 您需要在需要的源文件中导入模块。导入模块名称。正如您在评论中提到的,导入语句的pod名称中包含无效字符,因此它们可能会被下划线替换。要验证模块名称,您可以在工作区中展开P

ios - 无法为名为的类创建映射策略(Cocoa 错误 134110)

我正在CoreData中进行手动/大量迁移。我有数据模型,即myApp2.xcdatamodel和myApp3.xcdatamodel。myApp3在两个表之间有一个新表(如联结表),它们都是TO-MANY关系。此外,我还定义了一个NSEntityMigrationPolicy。现在,当我使用此自定义策略(专门为关系和管理数据编写)运行时,我在调用migrationManager.migrateStoreFromURL时特别遇到此错误Optional("ErrorDomain=NSCocoaErrorDomainCode=134110\"Theoperationcouldn’tbeco

ios - Swift - 框架中的共享核心数据 - 自动生成的类不是公开的?

我正在尝试在Swift中为WatchKit应用程序在应用程序组中共享核心数据模型,松散地遵循/模仿thisguy'swork.我已经创建了一个自定义框架(称为CoreDataKit)并将.xcdatamodeld文件作为框架目标的唯一成员;我创建了一个CoreDataStack对象,它创建和管理核心数据堆栈,它也是框架目标的唯一成员。最后,我在数据模型中创建了一个新实体,然后使用Xcode为该实体自动生成Swift文件,它给出了一个如下所示的类结构:importFoundationimportCoreDataclassFlightStatus:NSManagedObject{@NSMa

swift - Swift 是否严格执行协议(protocol)变量中的类?

协议(protocol)P需要C类的变量v。类X实现协议(protocol)P声明一个变量v类C1whereC1扩展C。代码如下:importFoundationclassC{}classC1:C{}protocolP{varv:C{getset}}classX:P{varv:C1init(withVv:C1){self.v=v}}Xcode提示这个错误:Type'X'doesnotconformtoprotocol'P'Protocolrequiresproperty'v'withtype'C'Candidatehasnon-matchingtype'C1'为什么编译器强制我匹配协议

ios - Swift 框架可以引用另一个 Swift 框架的类扩展吗?

当我在一个Swift框架中尝试调用定义为另一个Swift框架中的UIView扩展的函数时,出现“无法识别的选择器发送到实例”错误。它看起来与通过将-Objcflags传递给链接器(https://developer.apple.com/library/ios/qa/qa1490/_index.html)以及在框架中扩展泛型时出现的问题(SwiftFrameworkdoesnotincludesymbolsfromextensionstogenericstructs)非常相似。不幸的是,我的问题似乎有所不同,因为:定义扩展的框架和定义扩展的框架正在尝试使用它是用Swift编写的。这两个框