質問編集履歴
2
「前提・実現したいこと」を誤解を生まないよう修正しました.
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がうまく使えるかどうかを試したコードを追記しました.
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:
|
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
|
-
|
137
|
+
didSelectPostを以下のように変えたところ,画像の名前(文字列)の保存のみできました.
|
84
138
|
|
85
|
-
|
139
|
+
以下のコードで保存ができてるかImageViewControllerで確認したところ,print(img)でOptional(teklra;)と出力されました.
|
86
140
|
|
87
|
-
|
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
|
|