-[PFFile initWithCoder:]: unrecognized selector sent to instance
Samigos opened this issue · 3 comments
Whenever I'm trying to unarchive an object like so
image = aDecoder.decodeObject(forKey: "image") as! PFFile
it keeps crashing with the error below! Any idea what's going on?
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PFFile initWithCoder:]: unrecognized selector sent to instance 0x600000c386f0'
*** First throw call stack:
(
0 CoreFoundation 0x000000010e0051bb __exceptionPreprocess + 331
1 libobjc.A.dylib 0x000000010d5ab735 objc_exception_throw + 48
2 CoreFoundation 0x000000010e023f44 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x000000010e009ed6 ___forwarding___ + 1446
4 CoreFoundation 0x000000010e00bda8 _CF_forwarding_prep_0 + 120
5 Foundation 0x00000001099c5685 _decodeObjectBinary + 2409
6 Foundation 0x00000001099c3c67 _decodeObject + 246
7 Foundation 0x00000001099c3b63 -[NSKeyedUnarchiver decodeObjectForKey:] + 205
8 NUP 0x000000010626f768 $S3NUP4NPAdC5coderACSgSo7NSCoderC_tcfc + 3576
9 NUP 0x000000010627015f $S3NUP4NPAdC5coderACSgSo7NSCoderC_tcfcTo + 47
10 Foundation 0x00000001099c5685 _decodeObjectBinary + 2409
11 Foundation 0x00000001099c485f -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] + 1684
12 Foundation 0x0000000109958c1c -[NSArray(NSArray) initWithCoder:] + 198
13 Foundation 0x00000001099c5685 _decodeObjectBinary + 2409
14 Foundation 0x00000001099c3c67 _decodeObject + 246
15 Foundation 0x00000001099c3b63 -[NSKeyedUnarchiver decodeObjectForKey:] + 205
16 Foundation 0x00000001099c2e64 +[NSKeyedUnarchiver unarchiveObjectWithData:] + 84
17 NUP 0x00000001061d9b87 $S3NUP11NPAdManagerC21retrieveAdsFromDeviceyyF + 887
18 NUP 0x00000001062d2a26 $S3NUP18HomeViewControllerC11viewDidLoadyyF + 438
19 NUP 0x00000001062d2c44 $S3NUP18HomeViewControllerC11viewDidLoadyyFTo + 36
20 UIKitCore 0x0000000116b3f4e1 -[UIViewController loadViewIfRequired] + 1186
21 UIKitCore 0x0000000116b3f940 -[UIViewController view] + 27
22 NUP 0x00000001063349c5 $S3NUP22RootPageViewControllerC21viewDidLayoutSubviewsyyF + 7237
23 NUP 0x0000000106336444 $S3NUP22RootPageViewControllerC21viewDidLayoutSubviewsyyFTo + 36
24 UIKitCore 0x0000000117648914 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1824
25 QuartzCore 0x000000010af8ab19 -[CALayer layoutSublayers] + 175
26 QuartzCore 0x000000010af8f9d3 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 395
27 QuartzCore 0x000000010af087ca _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 342
28 QuartzCore 0x000000010af3f97e _ZN2CA11Transaction6commitEv + 576
29 UIKitCore 0x00000001171792d0 __34-[UIApplication _firstCommitBlock]_block_invoke_2 + 139
30 CoreFoundation 0x000000010df6a62c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
31 CoreFoundation 0x000000010df69de0 __CFRunLoopDoBlocks + 336
32 CoreFoundation 0x000000010df64654 __CFRunLoopRun + 1284
33 CoreFoundation 0x000000010df63e11 CFRunLoopRunSpecific + 625
34 GraphicsServices 0x00000001109251dd GSEventRunModal + 62
35 UIKitCore 0x000000011715e81d UIApplicationMain + 140
36 NUP 0x00000001063b8a44 main + 68
37 libdyld.dylib 0x000000010ee27575 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
This is my NPAd class
class NPAd: PFObject, NSCoding {
@NSManaged var type: String
@NSManaged var keywords: [String]?
@NSManaged var isPrioritizedUntil: Date?
@NSManaged var text: String? // if type is post
@NSManaged var image: PFFile
@NSManaged var imageDimensions: [String: CGFloat]
@NSManaged var link: String
@NSManaged var brandName: String
@NSManaged var brandIcon: PFFile
override init() {
super.init()
}
func encode(with aCoder: NSCoder) {
aCoder.encode(objectId, forKey: "objectId")
aCoder.encode(type, forKey: "type")
if let isPrioritizedUntil = isPrioritizedUntil {
aCoder.encode(isPrioritizedUntil, forKey: "isPrioritizedUntil")
}
if let text = text {
aCoder.encode(text, forKey: "text")
}
if let keywords = keywords {
aCoder.encode(keywords, forKey: "keywords")
}
aCoder.encode(image, forKey: "image")
aCoder.encode(imageDimensions, forKey: "imageDimensions")
aCoder.encode(link, forKey: "link")
aCoder.encode(brandName, forKey: "brandName")
aCoder.encode(brandIcon, forKey: "brandIcon")
}
required init?(coder aDecoder: NSCoder) {
super.init(className: "Ad")
objectId = aDecoder.decodeObject(forKey: "objectId") as? String
type = aDecoder.decodeObject(forKey: "type") as! String
keywords = aDecoder.decodeObject(forKey: "keywords") as? [String]
isPrioritizedUntil = aDecoder.decodeObject(forKey: "isPrioritizedUntil") as? Date
text = aDecoder.decodeObject(forKey: "text") as? String
image = aDecoder.decodeObject(forKey: "image") as! PFFile
imageDimensions = aDecoder.decodeObject(forKey: "imageDimensions") as! [String: CGFloat]
link = aDecoder.decodeObject(forKey: "link") as! String
brandName = aDecoder.decodeObject(forKey: "brandName") as! String
brandIcon = aDecoder.decodeObject(forKey: "brandIcon") as! PFFile
}
}
With further examination I realized that whenever the decoder tries to decode the data, it finds null.
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not save file data for 309c4db5f6e623ba0286ac891017322d_62237520_372569220283311_350326562345713664_n.jpg : Error Domain=NSCocoaErrorDomain Code=4 "Cannot create a PFFileObject with nil data." UserInfo={NSLocalizedDescription=Cannot create a PFFileObject with nil data.}'
Not sure what I changed but the data
doesn't seem to be an issue anymore... now this is what I get:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<PFFileObject 0x600000b05470> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key _url.'
Anyone here?