まず、私のアプリとその流れを説明させてください。アプリが開き、ユーザーがプロファイルを作成します (すべてのデータを type のディクショナリに保存します[String: Any]
)。ユーザーが [作成] をクリックすると、コンソール画面に送信されます (ユーザーが入力した情報の一部が表示されますsegue
)。プロフィール(名前、体重、住所など)を編集できるタブがあります。ユーザーが情報を編集すると (名前や体重などを変更するために)、コンソール ページに表示される情報も更新されます。
私の主な質問は、データがすべてのタブビューで普遍的に利用できるようにどのように構造化するかです。より具体的には、データはデータのインスタンスまたはコピーではありません。Person
すべての変数 ( 、 など) が格納されているfirstName
というlastName
クラスを作成しました。クラス宣言の前に person クラスのインスタンスを変数として宣言しようとしましたUIViewController
が、プロパティを使用できませUITextField
.text
ん (まだ作成されていないため...?)。
これが私の Person クラスです...
class Person {
var firstName: String
var lastName: String
var phoneNumber: String
var weight: Int
var gender: String
var streetAddress: String
var cityState: String
init(firstName: String, lastName: String, phoneNumber: String, weight: Int, gender: String, streetAddress: String, cityState: String) {
self.firstName = firstName
self.lastName = lastName
self.phoneNumber = phoneNumber
self.weight = weight
self.gender = gender
self.streetAddress = streetAddress
self.cityState = cityState
}
}
また、データをそのサブクラスに送信して、埋め込まれたすべてのタブで普遍的に利用できるようにすることができると読んだので、 UITabBarController
asをサブクラス化しました。私はそれがどのように機能するかについて途方に暮れています。TabBarViewController
viewController
繰り返し質問する可能性があることをお詫び申し上げます...これを調べたり調査したりしましたが、特定のケースに適した解決策が見つかりませんでした。
データを次のように保存するようにコードを更新しましたCoreData
...
guard let appDelegate =
UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let userInfo = PInfo(firstName: firstNameField.text, lastName: lastNameField.text, cityState: cityStateField.text, streetAddress: streetAddressField.text, gender: genderInputField.text, userWeight: 200)
save(withPersonInfo: userInfo, withContext: managedContext)
さまざまなデータにアクセスできますがviewControllers
、単一のアイテム配列として返されます...理想的には、それらをkey:value
ペアにして、表示するように簡単に設定し、編集できるようにしたいと思いますEdit Profile
viewController
.
ありがとう!