Post

Replies

Boosts

Views

Activity

iOS 12.2 beta 5 var imageURL = info[UIImagePickerController.InfoKey.imageURL] as? URL returning nil
UIImagePicker controller has been working fine forever in my code while selecting an image from the UIImagePickerController.But all of a sudden with the iOS 12.2 Betas, info[UIImagePickerController.InfoKey.imageURL] contains nil for all images!! Which means I can't obtain the URL for the image & use it!!func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { picker.dismiss(animated: true, completion: { [unowned self] in guard info[UIImagePickerController.InfoKey.mediaType] != nil else { return } let mediaType = info[UIImagePickerController.InfoKey.mediaType] as! CFString if mediaType == kUTTypeImage { if var imageURL = info[UIImagePickerController.InfoKey.imageURL] as? URL { self.employImageAtURL(imageURL) } else { fatalError("Failed to get imageURL") //CALLED EVERY TIME NOW!! } } }) }Is anyone else seeing this problem? Please help!
1
0
1.5k
Mar ’19
iOS Swift 4.2 Unarchive Array with NSKeyedUnarchiver unarchivedObject(ofClass:from:)
Since upgrading to Swift 4.2 I've found that many of the NSKeyedUnarchiver and NSKeyedArchiver methods have been deprecated and we must now use the type method static func unarchivedObject<DecodedObjectType>(ofClass: DecodedObjectType.Type, from: Data) -> DecodedObjectType? to unarchive data.I have managed to successfully archive an Array of my bespoke class WidgetData, which is an NSObject subclass:private static func archiveWidgetDataArray(widgetDataArray : [WidgetData]) -> NSData { guard let data = try? NSKeyedArchiver.archivedData(withRootObject: widgetDataArray as Array, requiringSecureCoding: false) as NSData else { fatalError("Can't encode data") } return data }The problem comes when I try to unarchive this data:static func loadWidgetDataArray() -> [WidgetData]? { if isKeyPresentInUserDefaults(key: USER_DEFAULTS_KEY_WIDGET_DATA) { if let unarchivedObject = UserDefaults.standard.object(forKey: USER_DEFAULTS_KEY_WIDGET_DATA) as? Data { //THIS FUNCTION HAS NOW BEEN DEPRECATED: //return NSKeyedUnarchiver.unarchiveObject(with: unarchivedObject as Data) as? [WidgetData] guard let nsArray = try? NSKeyedUnarchiver.unarchivedObject(ofClass: NSArray.self, from: unarchivedObject as Data) else { fatalError("loadWidgetDataArray - Can't encode data") } guard let array = nsArray as? Array else { fatalError("loadWidgetDataArray - Can't gat Array") } return array } } return nil }But this fails, as using Array.self instead of NSArray.self is disallowed. What am I doing wrong and how can I fix this to unarchive my Array?
1
0
14k
Jul ’18