草庐IT

swift - 错误 : Extra parameter in request i used Swift 4. 为什么我必须传递类型为 [String : Any]? 的参数

Alamofire.request(APPURL.GetAccounts,method:.post,parameters:transactionData,encoding:JSONEncoding.default,headers:nil).responseJSON{responseDatain}我的问题是限制我只能通过[String:Any]类型的字典的原因是什么?完整代码:classfuncgetAccounts(transactionData:[String:Any]?,withCompletionHandler:@escaping(_response:AnyObject?)->(

arrays - 无法将任何数组类型传递给以 [Any] 作为参数的函数

我有一个[String]类型的数组letnames=["Joffrey","Cersei","Mountain","Hound"]我有一个接受[Any]类型数组的函数。funcprintItems(items:[Any]){foriteminitems{print(item)}}现在,当我以names作为参数调用函数时,printItems(names)我收到错误消息无法使用类型为“([String])”的参数列表调用“printItems”。Any只是所有类型都隐式遵守的协议(protocol)的typealias。想法? 最佳答案

swift - 如何检查字段类型是否为 Any?是零或 NSNull

我实际上是在尝试在Xcode8.1上使用Swift3解析Json对象。这是我的代码:ifletobjData=objJson["DATA"]as!NSDictionary?{varmsg:String=""iflettmp=objData.object(forKey:"Message"){msg=tmpas!String}else{print("NIIILLLLL")}}我收到此错误消息:Couldnotcastvalueoftype'NSNull'(0x4587b68)to'NSString'(0x366d5f4)atthislinemsg=tmpas!字符串.我不明白为什么会出现此

swift - NSCopying 副本(带有 :) - Does it really need to return Any?

有没有什么方法可以使用NSCopying而返回的对象不是Any类型?它总是迫使我施法。这似乎很奇怪。我正在复制对象,Swift难道不应该根据copy这个词的定义知道它是同一类型吗?是否有另一种方法来复制我不知道的对象,或者是否有一些我缺少的“陷阱”需要这个。这个类很简单,比如:classPerson{varname:Stringvarage:Int}它必须是一个类,因为我需要继承。例子:varjohn=Person(name:"John",age:30)varjohnsClone=john.copy()as!Person我想我可以创建一个接受现有对象的初始化程序,但这在语义上似乎不如“

swift - Xcode 8 测试版 6 : AnyObject replaced by Any: where is classForCoder?

Xcode8beta6已将AnyObject替换为Any。在某些情况下,出于调试原因,我使用a.classForCoder来查看其中的内容。使用AnyObject这行得通。使用Any这不再有效。现在我必须使用Any:查看Any类型变量中的类型的首选方法是什么?转换为AnyObject似乎不是很有用,因为在许多情况下这是一个String而String不会确认AnyObject自Xcode8beta6以来不再存在。 最佳答案 使用类型(of:)您可以使用type(of:)找出Any类型的变量中的变量类型。leta:Any="hello"

swift - 期望解码 Array<Any> 但找到了字典

我正在从返回数组的API中获取数据,但需要用具有“子级别”的API替换它:RAW:ETH:USD:TYPE:"5"MARKET:"CCCAGG"FROMSYMBOL:"ETH"TOSYMBOL:"USD"PRICE:680.89CHANGEPCT24HOUR:-9.313816893529749这是我的结构:structEthereum:Codable{letpercentChange24h:StringletpriceUSD:StringprivateenumCodingKeys:String,CodingKey{casepriceUSD="PRICE",percentChange2

arrays - 如何检查 `Any` 类型的对象是一个实现某些协议(protocol)的具体类的数组

我遇到了一个问题。假设我有一个协议(protocol)和两个实现它的类:protocolInitiatable{init()}classA:Initiatable{requiredinit(){}}classB:Initiatable{requiredinit(){}}然后在某个时候我正在创建一个数组并将其传递给函数:vararray=[A]()funcupdate(object:Any){}update(object:array)从那个函数update我想将object传递给另一个函数,如果它满足另一个函数的条件:funcprocess(array:T){/*...*/}那么我如何检

swift - 检查 `Any` 值是否为对象

我惊讶地发现这个条件总是成立的:letfoo:Any=4ifletobject=fooas?AnyObject{print("It'sanobject.")//dosomethingwith`object`thatrequiresreferencesemantics}else{print("It'snotanobject.")}看来无论foo原本是什么类型,都被转换成了对应类的实例。有没有一种可靠的方法来确定foo是否是一个对象? 最佳答案 更新我在下面显示的代码被报告为在发布版本中不起作用。(请参阅下面PaulCantrell的评

swift - <T : Any> and no constraint <T> 的通用约束有什么区别

我见过一些使用约束的代码,例如并且无法在文档中找到它与未指定约束之间的区别。有什么区别吗,比如限制为非可选值? 最佳答案 约束确实是多余的,因为所有类型都是Any的子类型(包括Optional)。在内部,编译器实际上对类型Any进行建模作为协议(protocol)组合类型(例如P1&P2)由零协议(protocol)组成。没有办法用语言拼写这个,这就是为什么Any不再在标准库中定义1,它只是一个被解析为类型的关键字。所以约束T:Any从字面上解释为“T必须符合此空协议(protocol)列表中的所有协议(protocol)”,这显然

swift - 为什么不能在没有警告的情况下将 Optional 分配给类型为 `Any` 的变量?

以下代码在没有警告的情况下编译:版本1:varanything:Anyanything="woof"有道理...Any是任何类型、值类型或引用类型。但是,如果我们创建一个像Double?这样的可选变量,这段代码会抛出一个警告:版本2:varanything:AnyletaDouble:Double?=3anything=aDouble但是这段代码不会抛出警告:版本3:enumAnEnum:{casefirstcasesecond(T)}varanEnum:AnEnum=.firstanything=anEnum您可以合理化版本2抛出警告,因为Any不是Optional类型,而Doubl