-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPicture+CoreDataClass.swift
70 lines (60 loc) · 2.31 KB
/
Picture+CoreDataClass.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//
// Picture+CoreDataClass.swift
// VirtualTourist
//
// Created by Mayur on 01/11/16.
// Copyright © 2016 Mayur. All rights reserved.
//
import UIKit
import CoreData
public class Picture: NSManagedObject {
convenience init(remoteImageURL: String?, localImageURL: String?, associatedPin: Pin?, context: NSManagedObjectContext) {
if let entity = NSEntityDescription.entity(forEntityName: "Pin", in: context){
self.init(entity: entity, insertInto: context)
self.remoteImageURL = remoteImageURL
self.localImageURL = localImageURL
self.associatedPin = associatedPin
}
else{
fatalError("Unable to find Pin entity")
}
}
override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) {
super.init(entity: entity, insertInto: context)
}
var image: UIImage? {
// if localImageURL != nil {
// let fileURL = getFileURL()
// return UIImage(contentsOfFile: fileURL.path!)
// }
//MARK: Changed to comply with Udacity's rubric.
if let imageBin = imageBinary as? Data{
return UIImage(data: imageBin)
}
else{
return nil
}
}
func getFileURL() -> NSURL {
let fileName = (localImageURL! as NSString).lastPathComponent
let dirPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let pathArray:[String] = [dirPath, fileName]
let fileURL = NSURL.fileURL(withPathComponents: pathArray)
return fileURL! as NSURL
}
init(photoBinary: NSData, pin: Pin, context: NSManagedObjectContext){
let entity = NSEntityDescription.entity(forEntityName: "Picture", in: context)!
super.init(entity: entity, insertInto: context)
self.remoteImageURL = nil
self.localImageURL = nil
self.imageBinary = photoBinary
self.associatedPin = pin
}
init(photoURL: String, pin: Pin, context: NSManagedObjectContext) {
let entity = NSEntityDescription.entity(forEntityName: "Picture", in: context)!
super.init(entity: entity, insertInto: context)
self.remoteImageURL = photoURL
self.localImageURL = nil
self.associatedPin = pin
}
}