草庐IT

ios - 以 "generic"方式将 NSManagedObject 转换为结构体 (Swift)

我有一个CoreDataStore类,它有两个通用占位符,可用于模型中的每个实体类型。这个想法是它从存储中获取一个NSManagedObject子类(基于一种泛型类型),将其转换为适当的对象(基于另一种泛型类型)并返回该对象。此行为的目的是为了保持核心数据方面的封装并避免在整个应用程序中传递NSManagedObject实例。潜在用途示例这纯粹是用法可能看起来如何进一步证明我正在努力实现的目标。letpersonStore=CoreDataStore()letpersonData=personStore.fetchSomeObject()//personDataisavaluetype

arrays - Swift 2D Array Generic Extension - 访问二维的问题

我正在尝试将以下函数转换为二维数组的通用扩展。funcrotate(_input:[[Int]])->[[Int]]{letlength=input[0].countvarvalue=Array(repeating:[Int](),count:length)forindexin0..我特别困惑如何指定约束以允许我访问第二个维度。这是一次失败的尝试:extensionArraywhereElement:Collection,Element.Iterator.Element:Collection{privatefuncrotate(){letcount=self[0].count//Ele

ios - 在 Swift 中初始化结构错误 : Generic parameter could not be inferred

我试图在不提供参数的情况下在类中声明一个结构。该结构将需要由函数初始化,但应该对整个类可见。通常,我可以执行varmyStruct:MyStruct?但这次它给我一个错误。无法推断通用参数“Type”我是否错误地初始化了结构?我是如何使用它的:classMyClass:{staticletsharedInstance=MyClass()privateoverrideinit(){}letmyStruct=MyStruct?//?//?()//?'withnoargumentsfuncrunFunction(A:Int,B:Int){myStruct(var1:A,var2:B)//我的

swift 2.0 : Creating a Collection Type of Objects that conform to a Generic Protocol

例如:protocolSomeProtocol{typealiasTfuncdoSomething(something:T)}leta=Array()我想要一个数组,它是一个符合SomeProtocol的对象数组。这在理论上似乎很好,但我收到以下错误消息:Cannotbeusedasagenericconstraintbecauseitcontainsassosciatedtyperequirements.我想这是有道理的,毕竟Array也是一个通用结构,因此编译器将无法确定SomeProtocol和的实际类型数组是通用的。所以我的问题是-我觉得我应该能够拥有一个符合SomeProto

xcode - swift 泛型 : More specialized than generic?

XCode6:测试版5:目标:我正在尝试为语义兼容但不共享(或似乎共享)足够的协议(protocol)的类型编写泛型代码,以使我的泛型基于共享协议(protocol)的子集。到目前为止,我还没有找到解决方案,我想知道我是否遗漏了一些东西,或者它是否是语言的限制-任何见解都将受到赞赏。问题:我有一些函数只在类型上有所不同,在语义上没有区别,看起来很适合泛型。我遇到的问题是,据我所知,Swift执行的似乎是泛型的解析时绑定(bind),如果可能存在问题则失败,而不是在实际存在问题时失败。示例:在人为的示例中考虑以下通用函数:funcdefVal(T.Type)->T{return0.0}f

swift - 在 Swift 中,返回相同类型函数的通用函数给我 "Cannot explicitly specialize a generic function"

此函数接受一个Void->T函数并返回一个Void->T函数。funcfuture(f:Void->T)->Void->T{letqueue=dispatch_queue_create("com.test.lockQueue",nil)varresults:T?dispatch_async(queue){results=f()}return{dispatch_sync(queue){}returnresults!}}如果我这样使用它:letf=future{NSThread.sleepForTimeInterval(2)return10}我收到错误“无法显式特化通用函数”。但是,如果我

ios - 错误 : generic parameter 'T' could not be inferred in swift

我有一个函数,可以从嵌套数组中生成扁平数组。它非常适合int数组。letarray:[Any]=[1,2,[3]]funcmakeFlatArray(_array:[Any])->[Int]{varflatArray=[Int]()foriteminarray{ifletitem=itemas?Int{flatArray.append(item)}elseifletitem=itemas?[Any]{letresult=makeFlatArray(item)flatArray+=result}}returnflatArray}但我想让它成为通用的,但我在尝试时遇到了错误。funcmak

swift - 你能解释/解决这些 'generic constraint' 编译器错误吗?

当我尝试使用associatedType声明协议(protocol)时,我遇到了以下两个编译器错误-不确定什么是genericconstraint。protocolListener{associatedTypeValueTypefunccall(_binding:Binding,value:ValueType)}classBinding{varvalue:T?varlisteners:[Listener]=[]//error1:Protocol'Listener'canonlybeusedasagenericconstraintbecauseithasSelforassociatedt

swift 错误 : Generic parameter 'T' is not used in function signature

我正在尝试使用泛型来简化一些XML反序列化,但是,Swift2.0令人窒息地说我没有在我的方法签名中使用泛型。我很困惑为什么它会抛出这个错误,因为我直接实例化了传入的类类型。关于这个错误的原因有什么建议吗?确切的错误是:Genericparameter'T'isnotusedinfunctionsignatureMTXMLDeserializable是我正在使用的基类,它的方法是:init(properties:Dictionary?,propertyMap:Dictionary?)这是有问题的方法:functransformResponse(responseData:XMLIndex

ios - `Protocol can only be used as a generic constraint because it has Self or associated type requirements` 问题

我正在尝试生成一个符合协议(protocol)Protocoling的ViewModel,该协议(protocol)是通用的,并且具有关联的类型。有几个ViewModel符合协议(protocol),所以我正在尝试为viewModel创建一个工厂。我在Swift中遇到了以下错误:Protocol只能用作泛型约束,因为它有Self或关联类型要求示例代码:protocolProtocoling{associatedtypemodulingTypevardata:modulingType{get}}enumMyTypes{casemyNamecasemyAddress}classNameVi