-
Notifications
You must be signed in to change notification settings - Fork 131
Open
Description
Hi, any suggestions to fix crash and swift usage.
- Add on 'objectWithContentsOfFile' the 'nullable' flag to Swift optional compatibility.
- Try|catch on 'unarchiveObjectWithData:'.
Bellow the implementation of suggestions.
+ (nullable instancetype)objectWithContentsOfFile:(NSString *)filePath
{
//load the file
NSData *data = [NSData dataWithContentsOfFile:filePath];
//attempt to deserialise data as a plist
id object = nil;
if (data)
{
NSPropertyListFormat format;
object = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:&format error:NULL];
//success?
if (object)
{
//check if object is an NSCoded unarchive
if ([object respondsToSelector:@selector(objectForKeyedSubscript:)] && ((NSDictionary *)object)[@"$archiver"])
{
@try {
object = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
@catch (NSException* exception) {
NSLog(exception);
// delete corrupted archive
// initialize libraryDat from scratch
}
}
}
else
{
//return raw data
object = data;
}
}
//return object
return object;
}
Metadata
Metadata
Assignees
Labels
No labels