質問編集履歴

2

「前提・実現したいこと」を誤解を生まないよう修正しました.

2019/01/08 09:40

投稿

kj8
kj8

スコア16

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
 
4
4
 
5
- share extensionを利用して画像(写真フォルダの写真やスクショ)を共有したいと思っています.
5
+ share extensionを利用して画像を共有したいと思っています.
6
+
7
+ webページで開いている画像等ではなく,iphoneの写真アプリ内の画像やスクリーンショットの画像を共有することを想定しております.
6
8
 
7
9
  didSelectPostにおいて,postがクリックされた際にアタッチメントの画像をシェアしたいのですがうまくいきません.
8
10
 

1

保存がうまくいっているかどうかを確認するコードを追加しました.userDefaultsがうまく使えるかどうかを試したコードを追記しました.

2019/01/08 09:40

投稿

kj8
kj8

スコア16

test CHANGED
File without changes
test CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  imgName = ShareViewController.valueOfCell + "_" + imgName!
58
58
 
59
- sharedDefaults.set(imgName, forKey: self.namekey)
59
+ sharedDefaults.set(imgName, forKey: "name")
60
60
 
61
61
  sharedDefaults.synchronize()
62
62
 
@@ -76,17 +76,107 @@
76
76
 
77
77
  ```
78
78
 
79
+ ### 保存がうまくいったか確認するコード
79
80
 
81
+
82
+
83
+ ```Swift
84
+
85
+ class ImageViewController: UIViewController {
86
+
87
+
88
+
89
+ override func viewDidLoad() {
90
+
91
+ super.viewDidLoad()
92
+
93
+
94
+
95
+ //確認
96
+
97
+ let suiteName: String = "group..." //group名は適当です
98
+
99
+ let imgkey: String = "img"
100
+
101
+ let namekey: String = "name"
102
+
103
+ let sharedDefaults: UserDefaults = UserDefaults(suiteName: suiteName)!
104
+
105
+ let img = sharedDefaults.object(forKey: imgkey)
106
+
107
+ let name = sharedDefaults.object(forKey: namekey)
108
+
109
+ print(name as! String)
110
+
111
+ print(img)
112
+
113
+
114
+
115
+
116
+
117
+ }
118
+
119
+
120
+
121
+ override func didReceiveMemoryWarning() {
122
+
123
+ super.didReceiveMemoryWarning()
124
+
125
+ }
126
+
127
+
128
+
129
+ }
130
+
131
+
132
+
133
+ ```
80
134
 
81
135
  ### 試したこと
82
136
 
83
- 試しにif文等とっぱらい,以下のようにして文字列のみを保存しようとしたところうまくいったので,share extension自体の問題はないと思い
137
+ didSelectPostを以下のように変えたところ,画像の名前(文字列)の保存のした
84
138
 
85
- let sharedDefaults: UserDefaults = UserDefaults(suiteName: self.suiteName)!
139
+ 以下のコードで保存ができてるかImageViewControllerで確認したところ,print(img)でOptional(teklra;)と出力されました.
86
140
 
87
- haredDefaults.set("test", forKey: self.namekey)
141
+ ちなみに,「//画像を保存」と「画像の名前を保存」に該当するコードの順序を逆にして実行すると(画像を保存してから画像の名前を保存しようとすると),画像の名前すら保存されませんでした.
88
142
 
143
+ ```
144
+
145
+ override func didSelectPost() {
146
+
147
+
148
+
149
+ let inputItem: NSExtensionItem = self.extensionContext?.inputItems[0] as! NSExtensionItem
150
+
151
+ let itemProvider = inputItem.attachments![0]
152
+
153
+
154
+
155
+
156
+
157
+ //キーチェーンで紐付いている名前を記入
158
+
159
+ let sharedDefaults: UserDefaults = UserDefaults(suiteName: self.suiteName)!
160
+
161
+ //画像の名前を保存
162
+
163
+ var imgName = self.textView.text
164
+
165
+ sharedDefaults.set(imgName, forKey: self.namekey)
166
+
167
+ //画像を保存
168
+
169
+ sharedDefaults.setValue(inputItem, forKey: "img")
170
+
89
- sharedDefaults.synchronize()
171
+ sharedDefaults.synchronize()
172
+
173
+
174
+
175
+ self.extensionContext?.completeRequest(returningItems: [], completionHandler:nil)
176
+
177
+ }
178
+
179
+ ```
90
180
 
91
181
 
92
182