teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

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

2019/01/08 09:40

投稿

kj8
kj8

スコア16

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

1

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

2019/01/08 09:40

投稿

kj8
kj8

スコア16

title CHANGED
File without changes
body CHANGED
@@ -27,7 +27,7 @@
27
27
  //画像の名前を保存
28
28
  var imgName = self.textView.text
29
29
  imgName = ShareViewController.valueOfCell + "_" + imgName!
30
- sharedDefaults.set(imgName, forKey: self.namekey)
30
+ sharedDefaults.set(imgName, forKey: "name")
31
31
  sharedDefaults.synchronize()
32
32
  }
33
33
  })
@@ -37,13 +37,58 @@
37
37
  }
38
38
 
39
39
  ```
40
+ ### 保存がうまくいったか確認するコード
40
41
 
42
+ ```Swift
43
+ class ImageViewController: UIViewController {
44
+
45
+ override func viewDidLoad() {
46
+ super.viewDidLoad()
47
+
48
+ //確認
49
+ let suiteName: String = "group..." //group名は適当です
50
+ let imgkey: String = "img"
51
+ let namekey: String = "name"
52
+ let sharedDefaults: UserDefaults = UserDefaults(suiteName: suiteName)!
53
+ let img = sharedDefaults.object(forKey: imgkey)
54
+ let name = sharedDefaults.object(forKey: namekey)
55
+ print(name as! String)
56
+ print(img)
57
+
58
+
59
+ }
60
+
61
+ override func didReceiveMemoryWarning() {
62
+ super.didReceiveMemoryWarning()
63
+ }
64
+
65
+ }
66
+
67
+ ```
41
68
  ### 試したこと
69
+ didSelectPostを以下のように変えたところ,画像の名前(文字列)の保存のみできました.
42
- 試しにif文等をとっぱらい,以下のようにして文字列のみを保存しようとしたところうまくいったのでshare extension自体の問題はない思い
70
+ 以下のコードで保存ができてるかImageViewControllerで確認したところ,print(img)でOptional(teklra;)出力されした
71
+ ちなみに,「//画像を保存」と「画像の名前を保存」に該当するコードの順序を逆にして実行すると(画像を保存してから画像の名前を保存しようとすると),画像の名前すら保存されませんでした.
72
+ ```
73
+ override func didSelectPost() {
74
+
43
- let sharedDefaults: UserDefaults = UserDefaults(suiteName: self.suiteName)!
75
+ let inputItem: NSExtensionItem = self.extensionContext?.inputItems[0] as! NSExtensionItem
44
- haredDefaults.set("test", forKey: self.namekey)
76
+ let itemProvider = inputItem.attachments![0]
45
- sharedDefaults.synchronize()
77
+
46
78
 
79
+ //キーチェーンで紐付いている名前を記入
80
+ let sharedDefaults: UserDefaults = UserDefaults(suiteName: self.suiteName)!
81
+ //画像の名前を保存
82
+ var imgName = self.textView.text
83
+ sharedDefaults.set(imgName, forKey: self.namekey)
84
+ //画像を保存
85
+ sharedDefaults.setValue(inputItem, forKey: "img")
86
+ sharedDefaults.synchronize()
87
+
88
+ self.extensionContext?.completeRequest(returningItems: [], completionHandler:nil)
89
+ }
90
+ ```
91
+
47
92
  どうぞよろしくお願い致します.
48
93
  ### 補足情報(FW/ツールのバージョンなど)
49
94
  Swift4