草庐IT

反射面

全部标签

Swift:协议(protocol)变量的反射

我有一个带有一些{get}和{getset}变量和扩展的协议(protocol),我在其中设置前者,并在初始化类时设置后者。我想在字典中返回所有这些,即:protocolSomeProtocol{varid:Int{get}varname:String{getset}varisItTrue:Bool{get}}extensionSomeProtocolwhereSelf:SomeClass{varid:Int{return1}varisItTrue:Bool{returntrue}funcclassProps(){vardict=[String:AnyObject]()letmirro

swift - 如何检查属性是否已使用 Swift 反射设置?

我的某些模型具有可选属性。我正在尝试编写一种方法来评估它们是否已设置。下面是一次尝试,但我无法弄清楚如何从Any对象中确定一个nil值[编辑:(child变量的类型为任何)]。它不编译。funcallPropertiesHaveValues(obj:AnyObject)->Bool{letmirror=Mirror(reflecting:obj)forchildinmirror.children{letvalue=child.valueifletoptionalValue=valueas?AnyObject?{//DoesnotcompileifoptionalValue==nil{r

ios - 如何处理 Swift 中缺少反射的问题?

作为一名正在学习Swift的经验丰富的Objective-C开发人员,我确实缺少Objective-C的一些反射和动态特性。例如:我编写了一个JSON序列化器,它使用KVO和ObjectiveC内省(introspection)自动映射键和值,并且有像Mantle这样的开源库可以做到这一点。我可以将我的对象声明为NSObject子类并继续,但我觉得这不是Swift的做事方式。有没有其他方法可以使用Swift提供的功能来完成相同的任务,同时避免样板代码? 最佳答案 编辑:(2016年)这个答案是自动标注日期的。有些建议可能仍然相关,但

ios - Mapbox iOS 集群有效,但圆形样式层和数字层未出现/反射(reflect)集群的标记密度

我正在使用Mapbox创建一个iOS应用程序。应用程序向我的API发出请求,以JSON格式返回map边界框内发生的许多事件。我以前没有使用聚类,所以一些map注释只是覆盖了其他的。我正在使用thisMapboxtutorial它从GeoJSON文件创建一个MGLShapeCollectionFeature,从形状集合特征创建一个MGLShapeSource,然后创建一个标记层作为MGLSymbolStyleLayer,一个圆圈层作为MGLCircleStyleLayer,数字层作为MGLSymbolStyleLayer。标记图层在地理上显示每个单独的事件,圆圈图层和数字图层一起表示每个

快速反射导致任何不可能的零值

我正在尝试使用快速反射来检查对象的更改,这样我就可以只将更改的属性发送到服务器。我的一些属性是可选的。为了比较这些值,我需要打开它们,当然,你只能打开实际值,而不是nil值。因此,在比较它们之前,我需要检查其中一个值是否为nil。在我的Playground上,我尝试了以下方法:importUIKitclassmyClass{varfieldOne:String?varfieldTwo:Int?varfieldThree:Float?}varoneMyClass=myClass()oneMyClass.fieldOne="blah"oneMyClass.fieldThree=3.5var

Swift:反射(reflect) NSManagedObject 子类的属性

当使用镜像访问NSManagedObject子类的内部结构时,所有托管变量都将被忽略。publicclassFoo:NSManagedObject{@NSManagedvarbar:String?}varf:Foo=...//...creatingaFooinavalidcontext...letmirror=Mirror(reflecting:f)forcinmirror.children{//childrencount==0print("\(c.label!):\(c.value)")//neverexecuted}如何在NSManagedObjects上使用反射机制。

reflection - 在 Swift 中使用反射改变属性

我正在尝试创建一个将更改对象属性的序列化程序。例子:classtestobj{varprop1:Int=3varprop2:String="Hello"varprop3:Dictionary=Dictionary()}我知道我可以使用访问属性的名称和类型reflect(testobjc())[0].1和vartester=testobj()_std_lib_DemangledTypeName(tester.prop1)但我想做的是类似vartester=testobj()for(varx:Int=0;x本质上,我想遍历为给定类列出的所有属性,并在该类的新创建对象上设置属性。任何指导将不

swift - 使用反射在纯 Swift 中使用属性的字符串名称获取属性的值

我想使用Swift(不是Objective-C运行时)反射来创建这样的方法:funcvalueFor(property:String,ofobject:Any)->Any?{...}在某种程度上,我可以使用:funcvalueFor(property:String,ofobject:Any)->Any?{letmirror=Mirror(reflecting:object)returnmirror.descendant(property)}与classTestMe{varx:Int!}lett=TestMe()t.x=100letresult=valueFor(property:"x"

java - 使用反射获取Java数组中的字段 "length"

classTest{publicstaticvoidmain(String[]args)throwsException{Testt=newTest();System.out.println(t.field);System.out.println(t.getClass().getField("field").get(t));int[]ar=newint[23];System.out.println(ar.length);System.out.println(ar.getClass().getField("length").get(ar));}publicintfield=10;};当我运

java - 如果 Java 中的反射减慢了命令的执行速度,为什么还有那么多框架使用它?

据我了解,使用Java反射API会减慢命令的代码执行速度。但后来我看到它被用在Java世界的很多地方。仅举几例:注释Spring框架(AOP)hibernateMyBatis这意味着我错过了一些关于Java反射(又名优化技术)的事实。任何指针? 最佳答案 要点:因为他们别无选择。Java不是动态语言,因此这些框架提供服务的唯一方式是通过反射。其次,请注意这些框架所做的大部分反射工作只在初始化期间发生一次,因此运行时性能不会受到影响。关于反射的表现我注意到有一个区别一直被混淆:成员的反射查找;反射成员访问(调用/读/写)。1号很慢(这