Suggestion: `Value.fromDatatypeValue` should be allowed to throw
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 30/100
Research direction
Start with the Value protocol's fromDatatypeValue and datatypeValue entry points, using the NSPredicate serialization example in the issue as the motivating case. Determine the compatibility impact of allowing both conversions to throw and identify all affected callers; done requires a decided API design that handles serialization failures without forced unwrapping.
Written by the indexing model from the issue text.
Description
I am implementing my own serialization methods for a few objects, e.g. NSPredicate:
extension NSPredicate: Value {
@nonobjc public static let declaredDatatype = Blob.declaredDatatype
public static func fromDatatypeValue(_ datatypeValue: Blob) -> NSPredicate {
return NSKeyedUnarchiver.unarchiveObject(with: Data.fromDatatypeValue(datatypeValue)) as! NSPredicate
}
public var datatypeValue: Blob {
return NSKeyedArchiver.archivedData(withRootObject: self).datatypeValue
}
}
However, that as! NSPredicate bugs me. I would rather not have my code crash in the unexpected case that I can't unwrap an NSPredicate there. Would it be possible to augment the method signature of fromDatatypeValue with a throws clause to handle such errors? Similarly, there might be cases where serialization could fail as well, so while at it I'd suggest converting datatypeValue into a throwing function too.
- Dominant language
- Swift
- Stars
- 10.2k
- Forks
- 1.6k
- Avg merge
- 6d 2h
- Merged PRs (30d)
- 2
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from stephencelis/SQLite.swift
-
Difficulty 1/5 Under an hour Newbie friendliness 95/100
stephencelis/SQLite.swift#1375 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
stephencelis/SQLite.swift#1293 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 38/100
stephencelis/SQLite.swift#1347 · 7 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
stephencelis/SQLite.swift#1338 · 1 comment ·
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
stephencelis/SQLite.swift#1337 · 3 comments ·
All issues in stephencelis/SQLite.swift
Similar issues
-
tvOS
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
skiptools/skip-fuse-ui#147 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
OneBusAway/onebusaway-ios#1438 · 1 reaction ·