草庐IT

swift - 将 Any 转换为 Optional

我正在处理一组表示实体及其属性的类,然后可以从实体动态创建编辑器TableView。这些属性使用泛型来捕获属性类型。为了使用KVO并生成自动setter,这些属性包含一个关键路径。这是属性类的一个非常简化的版本:classXUEntityProperty{letkeyPath:StringvarcustomSetter:((Entity,Value)->Void)?funcsetValue(value:Value,onEntityentity:Entity){///Ifcustomsetterisset,useit.ifletsetter=self.customSetter{sette

swift - 将非可选的 Any 与 nil 进行比较总是错误的?

我正在遍历[String:Any]的字典,寻找nil,所以我可以用NSNull替换它们用于JSON写入。我的预编译器警告告诉我,将Any与nil进行比较将始终为false,但我知道它至少包含两个从未找到的nil。有没有办法检查Any是否为nil? 最佳答案 Optional可以是nil。其他任何东西都不能是nil。Any不是可选的。因此,没有必要将Any与nil进行比较。测试永远不会成功。如果您知道这些东西可能是可选的,您应该输入Any?。这是一个可选的,可以与nil进行比较。这是一个简单的例子:lets:String?=nille

swift - 为什么隐式解包的可选不在 [String : Any] 类型的字典中解包

如果我在我的类中声明了一个隐式解包的可选值,然后我在[String:Any]类型的Dictionary中引用它,它不会被解包。为什么是这样?为什么不是可选的Any不强制它解包?varaString:String!="hello"varparams:[String:Any]=["myString":aString]print(params)//Thisprints["myString":Swift.ImplicitlyUnwrappedOptional.some("hello")]请注意,如果我将字典指定为[String:String]类型,它将被解包,但是当我在Dictionary.

swift - 如何在 Swift 4 中观察 'Any' 对象上的键路径

我正在使用新的Swift4KVO和KeyPathAPI来观察对象的变化。具体来说,我试图在NSArrayController的选择对象上观察一些东西。问题是selection是Any类型,这似乎与生成所需的键路径不一致,因为编译器不知道对象的任何属性输入Any。该属性的名称是assetPointHeight。我的代码如下所示:varobservation:NSKeyValueObservation?observation=arrayController.observe(#keyPath(NSArrayController.selection.assetPointHeight),opti

向下转换时出现 Swift 错误 'Any'

以下代码几乎与AppleDocumentation完全相同并编译无误:guardletfirstItem=(rawItems!as?Array>)?.firstelse{throwAnError()}letidentityRef=firstItem[kSecImportItemIdentityasString]as!SecIdentity?//!!!guardletidentity=identityRefelse{throwAnError()}标有!!!的行包含强制向下转换,将as!替换为as很明显会导致编译错误“有吗?”不能转换为“SecIdentity?”...事实上SecIden

ios - 如何在 swift3 中从 Any 获取字符串

比如我从fetchData得到一个dic:(lldb)podic▿3elements▿0:2elements-.0:"total"-.1:0.00▿1:2elements-.0:"year"-.1:2016▿2:2elements-.0:"month"-.1:12(lldb)podic["year"]▿Optional(lldb)podic["year"]!2016是否有从Any中获取String的函数?函数的用法如下:lettotal=UtilSwift.getStrFromAny(dic["total"]asAny)在objective-c中,我写了一个方法:+(NSString*

swift - 是否可以将 Any 转换为 Optional?

假设我有一段这样的代码:letx:Int?=10lety:Any=x现在我想将y转换为Int?:letz=yasInt?//Error:Cannotdowncastfrom'Any'toamoreoptionaltype'Int?'这是不可能的还是有其他方法? 最佳答案 对于Swift2.0,您可以使用以下内容:letx:Int?=10lety:Any=xletz=Mirror(reflecting:y).descendant("Some")as?Int或者作为一个函数:funccastToOptional(x:Any)->T?{r

ios - swift 3 : Type 'Any?' has no subscript members

我的图表请求总是收到此错误??Type'Any?'hasnosubscriptmembers结果的错误点......这只发生在我转换为swift3......有人吗????letnextrequest:FBSDKGraphRequest=FBSDKGraphRequest(graphPath:"me/friends",parameters:["fields":"name,id,gender"],httpMethod:"GET")nextrequest.start{(connection,result,error)->VoidinguardletlistOfFriends=result[

json - Swift - 将 [[String :Any? ]] 转换为数据

我有一个[[String:Any]]对象填充如下:var结果:[[String:Any]]=[[String:Any]]()我需要将它转换成Data。我正在使用:JSONEncoder().encode(结果)转换它。但是我得到这个错误:Genericparameter'T'couldnotbeinferred是否存在一种将[[String:Any?]]对象转换为Data`的简单方法? 最佳答案 JSONEncoder只能对类型符合Encodable的对象进行编码。如果你想将Any编码为JSON,你需要使用JSONSerializa

arrays - 为什么 Swift 在将多个类型项放入数组时不对 Any 进行类型推断

使用Xcode7.1开发swift2.2时有两种情况让我很困惑,请看下面的例子,谢谢首先,当导入Foundation时,我声明了一个包含两个项目的testArray,一个整数类型1和一个字符串类型“hello”,我的问题是为什么Swift类型推断testArray为Array(NSObject)而不是Array(Any)importFoundationlettestArray=[1,"hello"]print(testArray.dynamicType)//testArrayisArray其次,当我删除importFoundation时,下面的代码无法编译,错误消息是“Typeofex