Skip to content

Commit

Permalink
Fix for when key is a String rather than NSString. Otherwise you can …
Browse files Browse the repository at this point in the history
…get the following crash:

Could not cast value of type 'Swift.AnyHashable' (0x1027b3b10) to 'SwiftFoundation.NSObject' (0x101a56668).
2018-02-16 14:30:46.355774+0000 TestFoundation[7306:8715333] Could not cast value of type 'Swift.AnyHashable' (0x1027b3b10) to 'SwiftFoundation.NSObject' (0x101a56668).
(lldb) up
frame apple#9: 0x000000010165b114 SwiftFoundation`NSMutableDictionary.subscript.setter(newValue=some, key=Swift.AnyHashable @ 0x00007fff5fbfcd88, self=0x000060800e181fe0) at NSDictionary.swift:649
   646 	        }
   647 	        set {
   648 	            if let val = newValue {
-> 649 	                �[4ms�[0metObject(val, forKey: key)
   650 	            } else {
   651 	                removeObject(forKey: key)
   652 	            }
(lldb) up
frame apple#10: 0x00000001004c0443 TestFoundation`static Dictionary.twEncode(data=TestFoundation.TwoWayMirror @ 0x00007fff5fbfce00, self=[Key : Value]) at TwoWayMirror.swift:386
   383 	            #if os(Linux)
   384 	            let key = NSString(string: key as! String)
   385 	            #endif
-> 386 	            dict[key] �[4m=�[0m TwoWayMirror.encode(mirror: &mirror)
   387 	        }
   388 	        return dict
   389 	    }
(lldb)
  • Loading branch information
johnno1962 committed Feb 16, 2018
1 parent cd24576 commit 598eccb
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion Foundation/NSDictionary.swift
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,8 @@ open class NSMutableDictionary : NSDictionary {
guard type(of: self) === NSDictionary.self || type(of: self) === NSMutableDictionary.self else {
NSRequiresConcreteImplementation()
}
_storage[(aKey as! NSObject)] = _SwiftValue.store(anObject)
let aKey = (aKey as? NSObject) ?? NSString(string: aKey as! String)
_storage[aKey] = _SwiftValue.store(anObject)
}

public convenience required init() {
Expand Down

0 comments on commit 598eccb

Please sign in to comment.