コードは機能していますが、毎回表示され続けるこの警告をサイレントにするにはどうすればよいですか?
let parentView = self.parentViewController as! SBProfileViewController
parentView.savedDetailsModel = SBSavedUserModel(data:responseObject["data"].dictionaryObject! as! NSMutableDictionary)
'[String:AnyObject]'から無関係なタイプ 'NSMutableDictionary'へのキャストは常に失敗します警告
SavedUserModelは保存された情報を保存します:-
class SBSavedUserModel : NSObject {
var userId : String!
var firstName : String!
var lastName : String!
var imageBase64 : String!
required init ( data : NSMutableDictionary) {
self.userId = data.objectForKey("userId") as! String
self.firstName = data.objectForKey("fName") as! String
self.lastName = data.objectForKey("lName") as! String
self.imageBase64 = data.objectForKey("image") as! String
}
交換してみてください
_responseObject["data"].dictionaryObject! as! NSMutableDictionary
_
これとともに:
NSMutableDictionary(dictionary: responseObject["data"].dictionaryObject!)
簡単にNSDictionaryにキャストできますが、何らかの理由でNSMutableDictionaryが必要な場合は、NSMutableDictionary(dictionary:)
で新しいものを初期化する必要があります。
編集:これが必要な理由については、@ Tommyによるこの質問へのコメントを参照してください。
NSArray
およびNSDictionary
とは異なり、可変のFoundation
コレクションタイプNSMutableArray
およびNSMutableDictionary
は、対応するSwiftにブリッジされません。
最も簡単な解決策は、Swiftネイティブタイプを使い続けることです
let parentView = self.parentViewController as! SBProfileViewController
parentView.savedDetailsModel = SBSavedUserModel(data:responseObject["data"].dictionaryObject!)
...
class SBSavedUserModel : NSObject {
var userId, firstName, lastName, imageBase64 : String
required init ( data : [String:AnyObject]) {
self.userId = data["userId"] as! String
self.firstName = data["fName"] as! String
self.lastName = data["lName"] as! String
self.imageBase64 = data["image"] as! String
}
}
または–辞書の値が文字列の場合はさらに便利ですall
parentView.savedDetailsModel = SBSavedUserModel(data:responseObject["data"].dictionaryObject as! [String:String])
...
required init ( data : [String:String]) {
self.userId = data["userId"]!
self.firstName = data["fName"]!
self.lastName = data["lName"]!
self.imageBase64 = data["image"]!
}