プログラミング言語Swift Part4 [無断転載禁止]©2ch.net
iPhoneアプリ開発の人たちは、swiftに移行してる やっとtype(of:self)じゃなくてSelfが使えるようになった せんせい質問∩(´・ω・`)
初心者質問でごめんなさい。
本を2冊くらい読んで、基礎はなんとなくわかったのだけど。
もっとあれこれとサンプルコードを見たいんですが、検索してもいまいちわかりません。
どこか「ここだ、ここ」って場所はあるんでしょうか? 変数Aが2以下、かつ変数Bが1から3
この場合はどのように書くのが良いでしょう? なんか落とし穴でもあんの?
普通にそのまま以外思いつかないけど。 その普通が分からないんでしょうが!
教えてくれても良かでしょ! 複数の条件を繋げるのが分からない、そして1.から3が分からない if A => 2 && B ここ { }
ここが、、、分からんのです つうか、レンジ使わずにベタでも良いから頭捻って書いてみるのも悪くないよ。
条件考えられるでしょ。 >>315
これが知りたいってこと?
正直何が分からないかが分からない。
if A <= 2 && (B >= 1 && B <= 3) {
} 俺は、昔codingは自分以外の人に分かりやすようにシンプルが一番って言われた。
if A <= 2 {
if (B >= 1 && B <= 3) {
}
} if文と不等号のみ
if A <= 2 {
if B >= 1 {
if B <= 3{
処理したいもの
}}} 分かりやすくという点では、文を分けることより名前に束縛する方が重要だと思うな
学習課題とかだと名前を付けようがないだろうけど みなさんありがとう
読みやすさが大事、初心を思い出したよ! なんというか、ちょっと簡潔に書いてみようってなる時期があるじゃない? CatalinaとXcode11でiOSアプリ作り始めるのでも>>303とか>>307がお勧め?
Single Viewのプロジェクト作成しただけでSwiftUIのHello World生成してくれたからSwiftUIで作る。
WebアプリとVBアプリ、Javaアプリ作るくらいはできる >>329
>>307はOSやXcodeのアップデートに追随して更新されてるよ。
SwiftUIなら、同サイトの↓がお勧め。
https://www.hackingwithswift.com/100/swiftui
https://www.hackingwithswift.com/quick-start/swiftui
電子書籍も販売されてるけど、これも終生無償アップデートという神対応。
WWDCの際には会期中に最新情報をサンプルコード付きでガンガン流してくれる。 英語できると、いーなー……やっぱり(´・ω・`)
がんばってこれ読みながらやってみようかな。 >>332
無料だし、100Daysは一回当たりそんなに長くないし。
Swiftの話題オンリーだから出てくる語彙は広くないから、慣れると思う。
サンプルコードも解説ごとに少しづつ書いてゆくスタイルだから、なんだったらコードを書いて動かしてみれば、解説で何を言っているのか理解する助けになるし。
(「ここまでではまだ動かない」とかも有るから、エラーが出たりしても慌てない心構えは必要)
なんせ情報量が違う。
100Days of Swiftのサンプルプロジェクトは30以上。どれもちゃんとアプリとして動くコードだし。 ありがとう。どうせ時間はあるんだ。やってみる。>>333 可能ならApp Storeに出品...とか考えているなら、現状では100Days of Swift、あくまで趣味や勉強のため、とかストア出品は数年後もしかしたらという感じなら100Days of SwiftUIか上記かのどちらでもって感じだと思う。
全くの初心者だと、基礎の部分だけでも日本語でやっておくと、その後英語教材も使い易くなると思う。
Appleのブックストアで無料入手できる「Swiftによるアプリケーション開発: 入門編」はXcode10だけど、良いテキストだと思う。 >>307
Day 24見てみた。
タダで見れるみたい。 基本的で悪いが、ワードとかの矢印でひとつ戻るに相当する機能あるの? 100days 3日目でしんどい
完走に1年ぐらいかかりそう
でもこれ完走したらswiftマスターになれるんですよね? 3ヶ月で三周してApp Storeデビューしたよ
語彙に慣れてくればスピードも上がるし、繰り返しの説明や確認の部分は斜め読みも出来る様になる。
DAY16からは実際に使えるアプリのプロジェクトが始まるし、グッと楽しくなってくる。
初心者の場合、基本の文法の部分はApple Book Storeで無料配布してる「Swiftによるアプリケーション開発: 入門編」辺りでやって、DAY16から始めても良いかも。 過疎スレでど平日に即レスありがとうございます
swiftのためにMacbookPro買った完全Mac初心者です
swiftUIってのが直感的にプログラミングできそうと感じたのと
一般人は将来パソコンを持たなくなって
そこで覇権を握るのはiPadOSだと思って
swiftに人生をかけようと思いました
基本がわかってないのでブックの入門編のクイズをちょっとやってみます
16日はまだまだ先ですが楽しみにがんばります
ちょっとモチベ回復しました 君が実現しようと思っているものは
既にそのMacBookに搭載されてるんだよ
浅はかすぎて話にもならない 基本的で悪いが、バックスラッシュってどうやって出すの? opt+\。
円マークを打つ機会が多いのでなければ
システム環境設定: キーボード/入力ソース/日本語 で、「“¥”で入力する文字」を「\(バックスラッシュ)」にしておく方が便利。 質問です。Swift専用のframeworkで教えてください。
frameworkで複数の.swiftをまとめて公開するサンプルを探しています。
メインのSwift class+別ファイルのenumをセットにしてframeworkで公開したいです。
推測するにmodulemapを自動生成でなく手で書くのではと考えたのですが、サンプルを見つけられていません。
objective-cで書くframeworkだと、複数ヘッダをumbrella headerに書けば良いのですが、swift専用の場合どのようにするのでしょうか? >>345
ありがとうございます
IDは変わってるかもしれないけど質問者です。 >>343
loc = lines of codes
なんて、初めて知った。
slay = destroy
marvel = be surprised = 驚く >>350
urge = ask strongly >>346
Xcode起動して
File - New - Framework
としてProject作れば良いのでは?
moduemapの編集なんて不要だと思う。 >>353
ありがとうございます。自動生成で正しく動くのですね。
もう一度試してみます。 XVim2 plug-in使ってる人居る?
俺は、Xcode11.4.1で使ってるけど、
Xcode11.5ではOK?
[Xcode 11.5 No loading box pops up · Issue #297 · XVimProject/XVim2](https://github.com/XVimProject/XVim2/issues/297)
plug-inのロードに失敗するらしいけど。 基本でとても恐縮だが、コピペのcnt c とcnt v で使えんの? ctrlキーはカーソルの移動や文字の選択、削除、入力ソースの切替など多用するけどね 構造体のcomputed property、var bの様にJavaScriptの無名関数の呼出の様な書き方ができるなんて初めて知った。
これって、Swift5から?
struct A {
var a: Int {
2
}
var b = {
3
}()
}
let a = A()
print(a.a) // => 2
print(a.b) // => 3 whileを使って自分の親のViewControllerを辿ってて欲しいカスタムViewControllerを取得したいんやが
var viewController = self.parent
while iet viewController = viewController, viewController is customController == false {
viewController = viewController.parent
}
return viewController as? customController
だとうまく取得できんねん
ええ方法あったら教えとくれ すいません、教えてください。
Finderのようにキーボードで操作できるリストビューを作りたいのですが
TableviewやListを使い、選択行に色をつけるとかは自分でやらないと行けないのでしょうか。
もしくはそれに適した別のコンポーネントがあるのでしょうか? Swift でもWebAssembly を吐き出せるようになるみたいだね。 >>364 かなり進化してる。 正式リリースではないが使用に耐えるところまで来ている。
DOMkit でブラウザのDOMに直接アクセスできる。
https://swiftwasm.org/
ブログから読むと良い。 Dateformatクラスでdateformatプロパティにyyyy-MMddと指定したのに
date(from:"2020/11/11")がパースされてしまうのですが、厳密にするにはどうしたらよいでしょうか
isLenientの値を変えても変化ありませんでした >>365
JS以外のいかなる言語もDOMに"直接"はアクセスできない。
WebAssemblyもそう。要望は来てるみたいだが計画はない。
なのでJS介しての呼び出し。
意識しなくてもよいかもしれないが"直接"ではなく間接。
キッチリオーバーヘッド出るから。
Microsoftもblazorで優良誤認誘ってるけどなんでみんなここ嘘つくんだ…
WebAssemblyの仕様調べれば分かるのに… >DOMに直接アクセスできる。
>意識しなくてよいかも知れないが"直接"ではなく関節。キッチリオーバヘッド出るから。
>内部でどう言う作りになっていようが、簡単にアクセスできることが善。
>>370
こいつ全く話噛み合ってねえな。
>>369
ところで昔のWebKitでDOMを扱えたけどあれもJS経由なの?
https://developer.apple.com/documentation/webkit/deprecated_symbols/document_object_models_api_legacy 以下はコードの断片に現れる[apiService]は何を意味してるのでしょうか?
ちなみにapiServiceはlet変数で、queryをパラメータとするclosureで使われるapiSeviceの参照方法(weak, unowned or strong)を指定してる様に見えるのですけど...
let responseSubscriber = onCommitSubject
.flatMap { [apiService] query in
apiService.request(with: SearchRepositoryRequest(query: query))
以下略
出典
https://github.com/SatoTakeshiX/SwiftUICatalog
https://github.com/SatoTakeshiX/SwiftUICatalog/blob/master/GitHubApiClientSample/GitHubApiClientSample/Screen/Home/HomeViewModel.swift >>372
ウゥーん、どうやら[apiService]の部分は
Capture Listと呼ばれる言語要素らしい。 >>373
強参照: [apiService]
弱参照 implicitly unwrapped: [unowned apiService]
弱参照: [weak apiService]
ref.
https://yamatooo.blog/entry/2021/03/26/083000 >>374
see in Language Guide.
Automatic Reference Counting, Resolving Strong Reference Cycles for Closures, Defining a Capture List. 7回読み勉強法の極意
1. 何度も読んでると、何が解っていて、不理解なのがどこなのか見えてくる。
flatMapってのはclosureの中でPublisherを動かしてもDownstreamを一本にしてくれるOperatorって事らしい。
Rubyのflattenが2重配列を解いてくれるのと同じ!
e.g.
[0, [1, 2]].flatten // => [0, 1, 2] swiftUIで画像を移動する方法がわからない
位置座標の数値に繰り返し加算して動かす方法ってないの?
なんか他の言語と感覚違ってて
慣れなんだろうけど >>377
offsetやpositionでできるよ。
座標に@state変数をいれて。 ウィジェットってprint()動かないんだけどどうするんすか 海外送金とか一般人には無縁だからなw
マネーロンダリングチェックが厳しくなってから使わなくなったけどw ロシアではSWIFTが通らなくなる(ビルドエラー的な XcodeとSwiftがガン、絶対にVScodeとflutterがいい。 >>386
何に対して癌なの?
Swiftに関するスレで、単に癌と言われても分からないよ。 はじめまして。swiftでiphoneアプリ作ろうと格闘中ですが、apiって自分で作るのはハードル高いの?企業が提供してるのを自分が使うイメージ? >>389
質問がよく分からないけどapiという仕組みを作るのは簡単だと思う、どのようなapiにするか中身による >>390
うーん、よく分からん
>>391
簡単なのもあるんだ? 例えばお菓子情報を検索するアプリを作ろうと思って、その情報があるapiから引き出してくる訳だけど、そのapiを作る方法が分からず積んでるんですよー。 >>392
たぶんapiの意味を勘違いしてると思うよ、意味をググってみて。
お菓子情報DB <- apiはここ -> 作りたいApp
お菓子情報のデータベース(DB)をすでに誰かが作っていて、apiを公開(提供)してるならあとは使わせてもらうだけだよ。
自分でDBを作るならDBを読み書きする仕組み(api)を作るんだよ。 >>393
ありがとう。ググってみたらDBとアプリを繋ぐインターフェイスなんだね。本見てもわからなくて、お陰で凄いイメージできたっす。
単純なDBならgoogle sheetで作れそうだし、それをapi化すれば何とか形になりそうな気がする。 会社で希望してみたらOKでてM1Max搭載機にしてもらえたんだが、
クリーン→ビルド時間が半分以上減ったので快適になってありがたい
ほんとIntelなんだったんだろうな… 初心者ですいません
テキストファイルのデータ全文を読み込んで表示したいです
以下のコードでは失敗している判定になってしまうのか読み込めず、catchの処理がされてしまいます
どこがダメなのでしょうか
# animals.txt
うさぎさん
かめさん
きりんさん
ぞうさん
let PATH = URL(string: "/Users/MYPC/Desktop/animals.txt")!
do {
var TXT_DATA = try String(contentsOf: PATH, encoding: .utf8)
print(TXT_DATA)
}
catch {
print("エラーが発生しました")
} >>397
URL(string:
を
URL(fileURLWithPath:
に変える SwiftってAppleの作ったコンパイル型言語でなんとなくカッコ良さそう、速そうだから使ってみたけど
文の書き方が悪いのか知らんけどスクレイピング程度ならcurlやgrep組み合わせたシェルスクリプトの方が速い… その結果をスマホなんかで利用するからSwiftで書くんやないの?なにがしたいんだ iOSアプリ作るために覚えるだけであって、それ以上でもそれ以下でもないと思う。
WEBサービス作らならPHPなりなんなりそれ用に覚えるだけ。 突然の質問で申し訳ないです。
title,caption,valueを持つクラスインスタンスの配列を作成したいと思っています。
ただし、Allay要素内のvalueはIntだったりStringだったり別個のインスタンスだったりします。
以下のようなコーディングをしてみたのですが、Root<Int>をRoot<Any>へ変換出来ない旨のコンパイルエラーが発生します。
対応策としてプロトコルにassociatedtypeを設定してRootで準拠させようとしてもRootの時点で型を決めないといけないようで
同様なエラーとなってしまいました。
ElementA(〜) as! Root<Any> は always fails ですし
var elementArray: [Root<some Any>] も同様の結果でした。
何か良い方法はないものでしょうか?
import Foundation
class Root<T: Any>: NSObject {
var title: String
var caption: String
var value: T
init(title: String, caption: String, value: T) {
self.title = title
self.caption = caption
self.value = value
}
}
class ElementA: Root<Int> {}
class ElementB: Root<String> {}
class ElementC: Root<NSObject> {}
var elementArray: [Root<Any>]
elementArray.append(ElementA(title: "A", caption: "CapA", value: 10))
elementArray.append(ElementB(title: "B", caption: "CapB", value: "ABC"))
elementArray.append(ElementC(title: "C", caption: "CapC", value: NSObject())) 404です。
以下訂正
誤:var elementArray: [Root<Any>]
正:var elementArray: [Root<Any>] = []
解決策の一つとして var elementArray: [Any] = [] とすればelementArray.append(〜)のエラーは解決しますが、
最後に以下を実行すると"Nothing"が3つ表示されます。
elementArray.forEach({print(($0 as? Root<Any>)?.value ?? "Nothing")})
当然と言えば当然なんですが、なんとかインチキでできないものかと・・・。 変数を先に定義してもいいかもね。
あと一つのarrayに複数の変数入れるならinitとか使わんほうがいいとか
struct datafile {
let name: String
let size: Int
let time: Double
} 404です。
遅くなってすみません。
頂いた内容などを参考に結果として以下のような形になりました。
ジェネリクスクラスを辞めてvalueをAnyとすることでRootを要素とするArrayを作ることができました。
ありがとうございます。
ただ、ElementAのvalueはIntであることが(人間は)判っているのに value as! Int で必ずキャストしないといけないのが難点ですね。
すみません、改行が多いと怒られませいた。次レスへ続きます。 改行を減らすために少し見辛くてすみません。
import Foundation
class Root: NSObject {
var title: String
var caption: String
var value: Any
init(title: String, caption: String, value: Any) {
self.title = title
self.caption = caption
self.value = value
}
}
class ElementA: Root {init(title: String, caption: String, value: Int) {super.init(title: title, caption: caption, value: value)}}
class ElementB: Root {init(title: String, caption: String, value: String) {super.init(title: title, caption: caption, value: value)}}
class ElementC: Root {init(title: String, caption: String, value: NSObject) {super.init(title: title, caption: caption, value: value)}}
var elementArray: [Root] = []
elementArray.append(ElementA(title: "A", caption: "CapA", value: 10))
elementArray.append(ElementB(title: "B", caption: "CapB", value: "ABC"))
elementArray.append(ElementC(title: "C", caption: "CapC", value: NSObject()))
elementArray.forEach({print($0.value)})