-
プログラム
-
Swift part13
-
UPLIFTで広告なしで体験しましょう!快適な閲覧ライフをお約束します!
Swiftについて語りましょう
※前スレ
https://mevius.5ch.n...cgi/tech/1540818496/
スレ立て時は1行目に「!extend::vvvvv」 VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured - コメントを投稿する
-
!extendを初めて使ったがこれで有効になってるのか?
-
1乙
-
xcodeのviewcontrollerswiftの行番号横に出てくる青い線ってなんか支障ある?
そのままでもいい? -
青くしてるとそこで止まるで
-
Xcode12からはdebug previewでは止まらなくなったで
-
邪魔だし消そうと思ったけど、今のバージョンだと消し方よく分からんな
https://teratail.com/questions/154127 -
Swift開発においては、UIKitとSwiftUIを知らないといけないとか、敷居が高くなってきたなぁ
-
勉強がてらに無料ライセンスで自分向けアプリを作ってるのですが、すぐに「もう利用できません」と出てきます
有料ライセンスにすれば、恒久的に利用できるでしょうか?
ライセンス規約には色々書いてありますが「ずっと使えます」という言及が見当たらずどうしたもんかと -
>今から新規で始めるのは不可能レベルだよな
下手すりゃObjectCまで知ってないといけないから実務でやるの怖い -
Javaやphpに比べるとプレイヤーが圧倒的に少ないなswift
-
過当競争に飛び込んでいく勇気ないわ
-
かと言って、ドロイド開発しても売れねーしなwww
-
ここで質問する内容かわからないけど、realms やfirebaseみたいにpostgresqlのデータをリアルタイムで同期してくれるツール見たいのないかね。
見つかってももう更新してなかったりで。 -
@objc func headertapped(sender: UITapGestureRecognizer) {
guard let section = sender.view?.tag else {
return
}
courseArray[section].isShown.toggle()
tableView.beginUpdates()←
tableView.reloadSections([section], with: .automatic)←
tableView.endUpdates()←
}
矢印の部分で型決定の情報がないってエラーメッセージでるんだが原因わかる? -
コード古すぎだろ
-
コードの修正とストア申請まで代行してくれる業者教えて
-
もはや受託開発会社探しだな
-
>>19
tableViewってどこで宣言してんの? -
うーん、スキルがある人を募集しようとしたら、1日いくらくらいかかるのかな??
-
8万円
-
それは原価ベースの値段だな
-
パーソル税も入ってないな
-
やっとasync/awaitかよ
他の言語から何周遅れだ -
MS起源の構文を入れるのに反対する勢力がApple社内にいたんでしょ
-
async awaitについて教えて下さい。
DispatchQueueでのsequencial queueと比較して理解しようとしています。
async付きで値を返すClosureブロック自体は、呼び出しスレッドとは別スレッドで動く。Closureの終了後に、awaitしているスレッド側で値を受け取る、という理解で合っていますでしょうか。
この場合、Closureを動かすスレッド自体がawaitなり処理中な場合、デッドロックになるのでしょうか。 -
>>30
let foo = await fn_async()
fn_asyncは呼び出し側と同じスレッドで実行されて
fn_asyncの中のawaitが来たらsuspendされてスレッドを明け渡す
resumeされた後は呼び出し側と同じスレッドで実行されるかもしれないし
違うスレッドで実行されるかもしれない -
ありがとうございます。
c#5.0側の資料なども読んでみました。なんかNSRunLoopでの非同期処理に近い様な。
awaitが登場するまでは同期実行し、そこからスレッドプールへ投げるという事ですかね。
もう少し読み込んでみます。 -
ボタン押したらバックグラウンドでインカメラを作動して動画が保存される機能付けたいけど難しい?
-
swift ui以前に、swiftそのものを使ってる人が居ない
-
SwiftUIな
スペースはいらない -
struct DoubleGenerator: IteratorProtocol {
var cnt = 1
typealias Element = Int
mutating func next() -> Element? {
defer { cnt *= 2 }
return cnt <= 10 ? cnt : nil
}
}
struct Doubler: Sequence {
// typealias Element = Int?
typealias Iterator = DoubleGenerator
func makeIterator() -> Iterator {
return Iterator()
}
}
上記のコードはコンパイル出来るのですが、コメントを外すとダメです。
SequenceのAPI DocumentにはElement, Iterator requiredとあるのに何故でしょう? -
>>37
API Referenceには
Default implementations provided.
とあるのでconflictするのかな?
ちな、compile errorは、
error: 'Sequence' requires the types ‘Doubler.Element' (aka 'Optional<Int>')
and 'DoubleGenerator.Element' (aka 'Int') be equivalent -
>>38
Default implementationの件はSequenceのmakeIterator()の事です。 -
>>37
コメントアウトしてもOKなのは推論が効くから
SequenceのElementは↓なのでエラーメッセージにあるようにInt?じゃなくIntにする
associatedtype Element where Self.Element == Self.Iterator.Element -
>>37
func makeIterator() -> Iterator {
return Iterator()
この部分はdefault implementationがあるとAPI referenceにある。
Jump to Definitionでソースを見てみる! -
>>42
これか!
where Self == Self.Iterator
これはどう言う事でしょうか?
/// A default makeIterator() function for `IteratorProtocol` instances that
/// are declared to conform to `Sequence`
extension Sequence where Self == Self.Iterator {
/// Returns an iterator over the elements of this sequence.
@inlinable public func makeIterator() -> Self
} -
>>43
この部分は実装では無く、別Sequenceの別シグネチャによる定義なのかな?
XcodeのJump to Definition機能ではdefault implementationを発見することは出来なかった。 -
非同期処理でTwitterAPI通信を行なって(Twitterライブラリ Swifter使用)、あるユーザーの最新ツイート一件を(30秒くらいの間)取得し続け、そのユーザーがツイートを行いツイートが更新された瞬間 そのツイートを表示するという仕組みを作りたいのですが、
( 早い者勝ちシステムに勝つため)
ループ部分の良い案が思いつきません、アドバイスいただけませんでしょうか
以下がSwifterライブラリで用意されたのユーザーの最新ツイート一件を取得する関数です、ツイートの取得に成功するとsuccess 、APIエラー等で取得できない場合はfailureが帰ります
ループを行いsuccess時に取得したツイートが前回 取得時のテキストと異なっていたら そのテキストを返すという関数を作りたいので、もし可能でしたらアドバイスやコードをお願いしたいです。長々と申し訳ありません
swifter.getTimeline(for: .screenName("ターゲットのID"),count:1 , success: { json in
// 成功時の処理
print(json[0]["text"])
}, failure: { error in
// 失敗時の処理
print(error)
}) -
Combineフレームワークを弄ってる。
自前のSubscriber, 例えばWeatherInfoを受け取るWeatherSubscriberクラスを実装しようとすると、大変なのだと気がついた。
UITableViewDelegateがtableViewメソッドの実装をたくさん求めるのと同様に、Subscriberはreceiveのシグネチャ違いのメソッドを3つも求めて来る。
e.g.
receive:_
receive:subscription
receive:completion
-
MVVMって何だ?
とずっと思ってたがMVCにObserver/Observableなメカニズムを導入したものだと理解した。
SwiftUI使えば必然的にMVVMを採用せざるを得ないという、良記事がここに!
https://tech-blog.ra...entry/20210331/swift
RxSwift付属のPlaygroundを開くとマシンのLoadAverageが飛び上がりXcodeがカクカク動いて閉口していた2017年頃から、気になってたのだ。 -
アーキテクトの話に、あー聞いたことあるってなりたい
-
dispatch使って非同期の処理を並列化させて
1番早かった処理が1つ完了したら処理を止めるなんてできる? -
非同期処理1: ----->キャンセル
非同期処理2: ----------->完了★ 一つが終わった時他を止めたい
非同期処理3: -->キャンセル -
3つ全部にキャンセル投げる処理をそれぞれのCompletion Handlerに入れとけば?
最近は変わってるかもだけど昔はキャンセルが必要なやつはDispatchWorkItem使ってた
非同期処理側でキャンセルリクエストされたかどうかをチェックして自分で処理を抜ける必要はある -
ありがとうございます。 ちょっとやってみます
-
IAP詳しい人いたら教えて下さい。
1.自動更新のサブスクリプションを購入
2.アプリをアンインストール+再インストール
3.リストア(SKReceiptRefreshRequest)実行
サーバ側でレシート検証を行うと、
「1」で購入した時のレシートに含まれるInApp.TransactionIDが
「3」で更新されたレシートに含まれるInApp.TransactionIDが変わってしまってます。
PurchaseDateとかその他フィールドはすべて同じ。
TransactionIDだけ変わってしまってます(sandbox)。
これは仕様でしょうか?それともApple側の不具合? -
C系を経てswift の勉強を始めたけど
この言語作った人頭おかしい
かなりのひねくれものだと思う -
>>58
Is Swift getting too complicated? – Chris Lattner on Swiftly Speaking
この動画によると、言語オタクがContributerに集ってる。
どの点がひねくれてる? -
objective-cから引き継がれてる関数のことかな?
-
>>57
勉強になりました。
>This value has the same format as the transaction’s transactionIdentifier property; however, the values may not be the same.
さり気なく怖いこと書かれてたのでサーバ側実装やり直しなんですが、
クライアント側の購入トランザクションと、サーバ側のInApp配列レコードを紐付けるのがトランザクションIDだと考えていたのですが、紐付かないケースもあるってことですね。
怖い仕様だ。。。
でも、紐付かないとなるとリストアができないと思われるのですが。。。 -
>でも、紐付かないとなるとリストアができないと思われるのですが。。。
思い違いでした。
オリジナルトランザクションIDを参照することでリストアできそうです。
ただ、購入時のレコード作成が出来ない気がします。
InApp配列から、購入時のトランザクションを特定して、PurchaseDateとExpiresDateを抽出する必要があると思いますが、
クライアント側のトランザクションIDと一致しない場合もあるとなると、仕様として破綻してしまいそうな。。。 -
もうSwityStoreKit使えよ
-
SwityStoreKitはクライアント側ライブラリですね。
クライアント側もほぼ実装終わってからSwityStoreKitってのがあるのを知りましたw
最初から知ってれば使ってましたが、、、
サーバ側でもうひとつおかしな仕様を発見しました。
1.自動更新コンテンツの定期購入をする
2.レシートをサーバ側で検証する?
3.アプリ終了
4.アプリ起動
5.レシートをサーバ側で検証する?
?と?でレシートに含まれるInAppのTransactionIDが違っていた。その他フィールドは同一の値。
起動のたびにレシートをサーバ側で検証して、定期購入中かどうかを判断するやり方が良いのかどうかは分からないけど。。。 -
Userdefaultの値を使って、クラスをインスタンス化
したいのですが、グローバル変数もしくはメンバ変数でこれを宣言したい(いくつかの関数内でクラスメソッドを使用したいため) 場合はどのように宣言すればいいですか? -
>>60
なるほどぉ。そうだよね。
method signature(type singnature, 同名のメソッドが複数存在するときに、各々区別するための情報)
が独特とかいう話かな。
他の言語も個性的だと思うけど。初期値つき引数の記載方法とか、可変個引数、Variadic Argumentsの記載方法とか、言語によってバラバラだし。 -
最近始めたばかりの初心者ですが、一つだけ質問させてください
ViewController
>view
>view1
>view2
こんな感じで画面全体のview1の上に、もう一枚の正方形のview2を置きたいのだけれど
真ん中にview2を設置するとちゃんと表示されるけど、下部に設置すると
>view
>view1
>view2
こうなってしまってビルドしてもview2が表示されなくなってしまう
ググってもなかなか解決できなくて、最終手段で質問させていただきました…
もしよければヒントでもいいので教えてください -
superview と subviewがどういうものかは理解できてる?
>> 画面全体のview1の上に、もう一枚の正方形のview2を置きたい
のなら最初から下の構成が正解のはずで、viewの位置でヒエラルキーが
変わっちゃうなら、そもそもview1が画面全体を覆ってないんじゃないかと
思うけどどうでしょうか -
>>70
superviewは一番最初からあるviewでsubviewは後から自分で追加したものって感じでしょうか?
たしかに下の構成が正解に思えますね…
view1は、4辺とも0で制約かけて画面一杯に広げてます
あれから色々触ってみて、一応storyboard上は制約もかけてview2を1の下部に置くことが出来たのですが、ビルドするとview1の下に入ってしまっています… -
なんかよく分からないけど解決しました
-
困った時はxcode再起動
-
>>71
storyboardはツリー表示順、下にあるほど前面に表示される -
ビジネスアプリ作るのにSwiftって選択はもう無いけどな
-
そろそろswiftUI使って良いかな?
まだ早いかな -
使いたいけど使いこなせません
なんかHTMLぽい雰囲気が苦手 -
SwiftUI使い始めたらめちゃくちゃ楽でもう戻れない。
あっという間に画面できるのすごい。
不便なところも多々あるけど。 -
SwiftUI実務で全く使えない
flutterの2年遅れって感じ -
SwiftUIのPreviewがXcode13beta 5でチョイと速くなった気がする。
俺の気のせいか?
ちなみにIntel Macです。 -
ご存知の方がいたら教えて下さい。
アルバムから写真を複数選択して取り込みたいのですが、選択をする際に標準アルバムアプリの様に日付でソートや検索させる事が出来る方法はありませんでしょうか?
現在複数選択させる為にDKImagePickerControllerを取り入れてみましたがどうも出来ないみたいで・・・。 -
ライブラリ使わないで作っちゃえば?
-
>>83
レスありがとうございます!
現状勉強し始めた所で作るスキルも余裕も無いので出来ればまずはライブラリが使えればと思っておりました。
AppleのPHPickerも見よう見まねで使ってみたのですが私のやり方が下手なのか選択後の表示までがかなり時間掛かってダメでした。
やはりライブラリではないのですかね・・・。 -
テキストエディタみたいなの作ろうとしててハイライトや文字色変更はAttributedString使えばいいのはわかったけど空白や改行をblank文字や矢印で可視化するのって(UI)TextFieldに対して実装できる?
-
空白は大丈夫だろうけど改行とか不可視文字はダメな場合があるかもね
とりあえずはlayoutManagerのshowsInvisibleCharactersを使えば可視化できる
カスタマイズしたければlayoutManagerのdelegate -
>>86
ありがとう試してみる -
テーブルビューのセルをドラッグで並び替えたいです
セルはカスタムセルを使ってます
tableView.isEditing=trueにした時に
削除ボタンは勝手に左に出てくるんですが
逆に並び替えボタン(3本線のやつ)が
セルの右に出てこなくて困ってます
カスタムセルを使ってる場合は
並び替えをどう実現すればいいのでしょうか?
ググってもデフォルトのセルの説明ばかりで
カスタムセルの並び替えの情報が少なく、、、 -
カスタムセルでも3本線出るよ
レイアウトの設定がおかしいのでは -
>>89
こんな感じですね…
https://i.imgur.com/CoOvluV.png
contentViewの背景を透明にしてるせいかなと
思ったのですがグレーにしても表示されず…
その3本線はセルがどういう構造であっても
一番上のレイヤーの右端に描画されるんでしょうか…? -
SwiftUI のeditMode がactive の時、特定のセルだけonDelete を効かなくするとか出来ますか?
-
誰かほんとに助けて下さい…
画像を消したつもりがxcassetを消してしまったらしく
リファレンス削除じゃなくて本削除をしてしまい
ゴミ箱にすら元ファイルがない状況です
NewFileから新しくxcasset を追加して
そこに元々あった画像を入れ直したのですが
ビルドは通るのですが実際には画像が全く表示されません
100時間くらいかけて作ったのに
たった1つのミスでおじゃんになるとは…
誰か助けて下さい… -
Time MachineかGitHUbに残ってるだろ
-
ならもうないんじゃない?
ただ入れるだけじゃなくて、画像の名前も揃えなきゃ読み込まないよ。 -
Time Machine使ってないとか自殺行為だろ
-
>>95
画像の名前は変えてないですね
元画像は別のフォルダに入れてたので
元画像のファイル名がそのままファイル名になってます
画像の名前が同じでエラーも出ていなくて
それでも表示されないってどういうケースが
考えられますでしょうか?
…と打ちながら色々やって原因わかりました
xcassetが消えた時に何故かStoryboardの
ビュー達のレイヤーの上下関係がぐちゃぐちゃになってて
再背景のビューが最前列に来ていたので
エラー出ずに何の画像も表示されない感じになってました
すみません、回答くださった方々
ありがとうございます
タイムマシンてやつを調べてやってみます -
年金が振り込まれません
どうしたらいいですか?
賭け金は払ったことありません -
色々調べたんですがタイムマシンは
ノートPCだし容量が足りなさそうなので
gitのローカルリポジトリってやつでやります
最初からこれ使ってれば
git reset --hard HEAD
の1行で元に戻せたのか…なんて事だ… -
ローカルリポジトリだけだと内部ストレージが死んだらまた消えちゃうからタイムマシンと併用がいいんじゃね?
それにタイムマシンは外付けストレージに保存するからノートPCとかあんまり関係ないかと
あとストレージの痕跡からファイルを復活させるフリーウェアも探せば見つかる
↑今すぐ読める無料コミック大量配信中!↑