· 10 years ago · Sep 23, 2016, 11:32 AM
1import Foundation
2 import UIKit
3
4 class ViewController: UIViewController {
5
6@IBOutlet weak var image: UIImageView!
7
8override func viewDidLoad() {
9
10 super.viewDidLoad()
11
12 // Do any additional setup after loading the view, typically from a nib.
13}
14
15override func didReceiveMemoryWarning() {
16 super.didReceiveMemoryWarning()
17 // Dispose of any resources that can be recreated.
18}
19
20@IBOutlet weak var blendName: UITextView!
21
22@IBOutlet weak var kakidashi: UILabel!
23
24@IBOutlet weak var kakidashi2: UIImageView!
25
26@IBAction func pushButton(sender: AnyObject) {
27 print("push")
28
29 let _dbfile:NSString = "sqlite.db"
30 let _dir:AnyObject = NSSearchPathForDirectoriesInDomains(
31 NSSearchPathDirectory.DocumentDirectory,
32 NSSearchPathDomainMask.UserDomainMask,
33 true)[0]
34 let fileManager:NSFileManager = NSFileManager.defaultManager()
35 let _path:String = _dir.stringByAppendingPathComponent("(_dbfile)")
36
37 print(_path)
38
39 if(!fileManager.fileExistsAtPath(_path)){
40 //ファイルãŒãªã„å ´åˆã¯DBファイル作æˆï¼ˆæœ€åˆã®æŠ¼ä¸‹ï¼‰
41 let _db = FMDatabase(path: _path)
42 let _sql = "CREATE TABLE notes (nid INTEGER PRIMARY KEY AUTOINCREMENT,blendName TEXT);"
43
44 _db.open()
45
46 var _result = _db.executeStatements(_sql)
47 print(_result)
48
49 _db.close()
50
51 }else{
52 //ファイルãŒã™ã§ã«å˜åœ¨ã™ã‚‹å ´åˆï¼ˆï¼’回目以é™ã®æŠ¼ä¸‹ï¼‰
53
54 let _db = FMDatabase(path: _path)
55
56 let sql_create_table = "CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY AUTOINCREMENT, blendName TEXT,image MIDIUMBLOB);"
57
58 _db.open()
59
60 var result = _db.executeStatements(sql_create_table)
61
62 let db = FMDatabase(path: _path)
63
64 let sql_insert = "INSERT INTO notes (blendName) values (?);"
65
66 let sql_insert2 = "INSERT INTO notes (image) values (?);"
67
68 let sql_select = "SELECT nid, blendName FROM notes ORDER BY nid;"
69 var _result_insert = _db.executeUpdate(sql_insert, withArgumentsInArray: [self.blendName.text])
70
71 var _result_insert2 = _db.executeUpdate(sql_insert2, withArgumentsInArray: [self.image.image!])
72
73
74 var rows = _db.executeQuery(sql_select, withArgumentsInArray: nil)
75 while rows.next() {
76
77 // カラムåを指定ã—ã¦å€¤ã‚’å–å¾—
78
79 let nid = rows.intForColumn("nid")
80
81 // カラムã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’指定ã—ã¦å–å¾—
82
83 let blendName = rows.stringForColumnIndex(1)
84
85 //UIImageã‚’ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æ ¼ç´ã§ãã‚‹Stringã«å¤‰æ›ã™ã‚‹
86
87 func Image2String(image:UIImage) -> String? {
88
89 //ç”»åƒã‚’NSDataã«å¤‰æ›
90
91 let data:NSData? = UIImagePNGRepresentation(image)
92
93 //NSDataã¸ã®å¤‰æ›ãŒæˆåŠŸã—ã¦ã„ãŸã‚‰
94
95 if let pngData = data {
96
97 //BASE64ã®Stringã«å¤‰æ›ã™ã‚‹
98
99 let encodeString:String =
100
101 pngData.base64EncodedStringWithOptions
102 (NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
103
104 return encodeString
105 }
106 return nil
107 }
108 //Stringã‚’UIImageã«å¤‰æ›ã™ã‚‹
109 func String2Image(imageString:String) -> UIImage?{
110
111 //空白を+ã«å¤‰æ›ã™ã‚‹
112 var base64String = imageString.stringByReplacingOccurrencesOfString(" ", withString:"+")
113 //BASE64ã®æ–‡å—列をデコードã—ã¦NSDataを生æˆ
114 let decodeBase64:NSData? =
115 NSData(base64EncodedString:base64String, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
116
117 //NSDataã®ç”ŸæˆãŒæˆåŠŸã—ã¦ã„ãŸã‚‰
118 if let decodeSuccess = decodeBase64 {
119
120 //NSDataã‹ã‚‰UIImageを生æˆ
121 let img = UIImage(data: decodeSuccess)
122
123 //çµæžœã‚’è¿”å´
124 return img
125 }
126 return nil
127 }
128
129 print("nid = (nid), blendName = (blendName),image = (image)")
130
131 kakidashi.text = " (blendName)"
132 }
133 _db.close()
134 }
135 }
136 }