プログラミング言語Swift Part4 [無断転載禁止]©2ch.net
1000 名前:名称未設定 [sage] :2017/01/18(水) 23:17:48.88 ID:a8h1sO0A0
>>1000ならswiftは終了
おい^_^ こういう成熟してない過渡期の言語の解説本を、電子書籍で出さないのは誠意を疑うよな :.
::::..
::::...
::::... Swift、もう終わっちまったのかなぁ?
::::... ∧_∧_∧
::::.(∀・( ´Д`) 馬鹿野郎、まだ始まってもいねえよ
r -( ( O┰O
..::ii'⌒< < ) 冊冊〉
::'、__,,l!しし(_)l!lJ´
'、__,l!j >>9
>まだ始まってもいねえよ
そうだったな
すまなかった Swift終了詐欺は前スレの1000がいけないのだよ スマホアプリ開発の人たちは、swiftに移行してるみたいだけどね。 AppleScriptでSwift使えれば覚えるのに do shell scriptから呼べなくはないけどね でもコマンドは英語だから、まだまだ小学生には難しいな。 playgroundsのコードを学ぼう1の最終問題。
解けたけど、見苦しいcodeしかかけなかったのでもっとスマートなcode教えてください。 こんなBEMを動かすプログラムもどきじゃなくて、ちゃんしたSWIFTのプログラミングが勉強できるコースを用意してほしい。 やっとKindle版出てる
去年もそうだけどなんでこんなに遅れるのかね荻原クン
まあ買ったけど Swiftの解説はiBooksで読める公式本が一番正確で信頼できるわ 泥でSwiftのうわさって
今考えるとホントだったのかもな
結局コトリンみたいだけど >>31
Google I/O見たけど、コーリンって発音してた。 >>34
Javaはもお要らないって、考えてるから。Googleが作ったわけじゃ無いし、
Oracleがメンテしてるし。 >>35
勝手に独自仕様付けるなってやっていたしな Swift4が出たね。
3とソースレベルの互換を保つという話だったが,
コンパイラーに互換モードが付いただけなの? 五感を研ぎ澄ませ
本能に身を委ねろ
神の御心のままに >>37
Swift.orgのdownloadページを見てみたが、Swift4のRelease版は無いのだが? Swiftの開発者が、わずか6ヶ月でTeslaを去る
ttp://jp.techcrunch.com/2017/06/21/20170621swift-creator-departs-tesla-after-just-six-months/
> 「結局、Teslaは私にはあまり合っていなかったことがわかりました」と彼は言っている。
> Lattnerはまだ次の仕事のことは決めていないようだ。
戻ってきてもええんやで〜 Swiftの迷走ぶりを見てれば分かるが仕事のやり方が好き勝手やって中途半端だから解雇されたんだろ >>45
配列を使った計算で
SwiftとC言語では、1000倍違うらしい
開発者Jukka Suomelaが言ってる 高級言語だからそういうもんじゃないの?
C配列使いたかったらファイル分けてCで書くとか、めんどくさいけどSwift内でポインタ使うとかすれば… >>47
早く処理したい部分を、C言語で書いてBridging-Header作って取り込むとか、
modulemapファイルを作ってimportするとかすれば良い。 >>50
相当ストレス溜まってるね。
職場で上手く行ってない見たいね。 おぷちまいずの有無でこんなに差があるってどうしたことやねんとは思うな
「こんなに」ってれべるじゃねーって感じw そのページコメント欄の
Learn OpenGL ESってひとの書き込みが
わかりやすいかと。
言うほど差は無くないか? その人のはオプティマイズ有りきでしか言ってね?オプティマイズの有無がというのではないだろう え?標準のオプティマイズ無しでパフォーマンス語って何の意味があるの? って、>>53の最もいいねwって付いているのに及び付けてるのに言いに行けば?
何言ってんの?頭大丈夫?と思われるだけだと思うがw ド素人かな
-Ononeはデバッグ用であって速さなんか誰も求めてないぞ?
遅くなってもいいから色んなデバッグ用に有用な情報を埋め込むモードだぞ?
頭大丈夫? >>59
-O 自体はオプションであってなければコンパイルできないわけじゃないぞ?玄人さん
ちなみにちゃんとしたデバッグオプションは別にあるけどな
どうも、オプティマイズの意味がわかってなさそうにしか見えないな。デバッグ用って言い切ってしまうあたり、すげえな自称ど素人じゃない人はw
(ちなみに一般的にオプティマイズするとほげほげな場合もまあ稀にあるとかないとかw)
てか、なにをオプティマイズありきに必死なの?オ
プティマイズ有無でこんな差があるのは珍しすぎる、いったいなんなんだ?という技術的w興味は普通わくだろうと思うんだがな、自称ど素人じゃない人なら尚更
ただ、それだけだよ? 良くある最適化のトラブルとしては、基本的なインライン展開なんかでさえ期待通りに動かなくなるケースはあるから、デバッグというか、問題の切り分けに最適化なし。で走らせてみる必要がある。ってのは別に間違ってないと思うんだけど。
Swiftがどういうステップで機械語を作ってるか知らないけど、配列操作の話題については、ループの最適化とか、並列処理への展開とか、するしないで激烈に性能差が出るのも、まあ、そんなものだと思うし。
どの辺が問題なのかよくわかんない。 何も分かってなさそうなやつが技術的興味とか笑かすわ release設定ではデフォルトでオプティマイズ有りだしドキュメントにもオプティマイズしろって書いてあるし
逆にオプティマイズしたらデバッガがトレースできなくなるからdevelopビルドはデフォではオプティマイズされてない。
だからSwiftでreleaseするにはオプティマイズ有りきが前提でしょ あれは全然人間が読めるコードじゃん、、、
むしろ、嗜みとして読めるようになっとけよ >>66
すげーな
例えばllvmコードでFizzBuzz問題を書くとどんな感じになるの? swiftでFizzBuzz問題のコード書いてemit-llvm-irとかでダンプしれ
その環境もないなら知らんわ >>68
>emit-llvm-ir
ir = intermidiate representationなのね
Web Assembliesにllvmのコードが使われるって聞きました。
なんの事かよく知らんですけど、ブラウザで3Dゲームできるんだってねぇ。 >>68
「llvm fizzbuzz」でググったら出てきたわ おう、良かったな。これでお前もLLVMコード読めるようになったじゃん。
すげーな >>72
情報処理試験、Java選択してラッキーで合格した。
危なかった。 >>49
だからさ、Cに頼るならObj-Cでよくね? Obj-C、ワンポイント・レッスン
メソッド定義
(戻値)Keyword1:(型)arg1 Keyword2:(型)arg2 Keyword3:(型)arg3
メソッド呼出
[レシーバー Keyword1:arg1 Keyword2:arg2] Obj-Cワンポイント
クラスの定義
@interface MyClass: NSObject {
NSString* message;
}
-(void)setMessage:(NSString*) str;
-(NSString*)message;
-(void)printMessage;
@end
クラスの実装
@implementation MyClass
-(void)setMessage:(NSString*) str {
message = str;
}
-(NSString*)message {
return message;
}
-(void)printMessage {
NSLog(@“%@“, message);
}
@end Obj-Cワンポイント
インスタンス変数
@interface MyClass: NSObject {
NSString* message; // インスタンス変数
}
// インスタンス変数のプロパティ化
@property NSString* message;
@end
プロパティの実装
@implementation MyClass
@synthesize message;
@end これは老害ですわ
なんでこんな古いObjCの記述をするんだよw
Modern Objective-Cを学び直すか、ObjCを捨ててSwiftを学ぶべきだな >>82
じゃぁ、Modern Objective-Cを教えて! Adopting Modern Objective-C
こんなん、見つけた。 #import <FrameWork/lib.h>
@interface MyClass : SuperClass
@property NSString *message;
- (void)printMessage;
@end
#import “MyClass.h”
@implementation MyClass
- (void)printMessage
{
NSLog(@“%@“, _message);
}
@end >>87
@synthesize message;
って不要なのか?
それから、_messageってインスタンス変数が宣言されてない様だが、
@propertyで暗黙的に宣言されるって事か? スレチを続けてる奴は老害というより単なるガイジだな >>87
>@property NSString *message;
@property (copy)NSString *message;
って書きかえろ!とwarningが出た。
これがModern Objective-Cなのか? mutable/immutableをクラス分けでしか表現できない残念モダンなObjC 新概念!が出るたびに言語仕様に直接組み込んでは
後で仕様グダグダになる【モダン】より
なんでも「クラスの仕様です」で済ますObj-Cの方が
実はスマートなんじゃないかとずっと Fast Enumだの@synthesisだのドット記法だの@リテラルだのBlocksだのinstancetypeだの...
ObjCほど後から後から醜いツギハギだらけの言語も無いと思うがね 最初からCとオブジェクト機能を糊で貼り合わせたつぎはぎですしおすし ObjectiveCを基準にすれば、他のだいたいのものは良いものだ。 >>97
その都度、新概念!素晴らしい!って絶賛続けた信者はスゴイ
Swiftも新言語!素晴らしい!って受け入れてくれればこうはならなかったろうに >>98
おれはむしろそれが強みだと思ってるけどな
Cのソースがそのまま使えるなんて他言語ではないだろ NSObjectの上にCのソース貼るだけでもうクラスとして取り回しできるしな それをわかってくれるかぁ ゜*。(*´Д`)。*° C++のfriend相当とか、Objective-Cのprotected相当のアクセス指定が欲しいな… 今のswiftで書いたアプリってMavericksではもう動かせんの? >>107
Deployment Targetを10.6にしてやれば良いんじゃない?
そすれば、Mavericksどころかその前までOKかも。 mozc for iOS使おうと思ったら、日本語の変換候補が出てこない…(泣)
どうしたらいいんだよ… appstoreって2つのアカウント作って別名で登録してもいいの? >>110
Apple IDを2つ作るって事?
Developer用Apple IDと、non-Developer用Apple ID2つ作ってる人は多いのでは? >>111
2つのサークル別々に開発して作者名をかえたいの 可変個の引数から別の可変個引数に、可変個扱いのまま渡す方法ってありますか?
func f(_ args: Any...) {
sub(args) //これだと引数1個扱い
}
func sub(_ args: Any...) {
} 補足
Array版を作るしかない?
func f(_ args: Any...) {
sub(args)
}
func sub(_ args: Any...) {
sub(args)
}
func sub(_ args: [Any]) {
} withVaListを使えばできるのかもしれないけど
Array版作ったほうが良さそう
https://stackoverflow.com/a/29401619 >>115
ありがとうございます。
Cのva_list用で、可変個を可変個で、ってものではなさそうですね。 UIApplication.shared.isNetworkActivityIndicatorVisibleはiPhone Xでは表示されないんかな? 表示されないっぽい
代替表示用してくれても良さそうなものを… Macの市販アプリってGUIの表示がアプリ毎に違ってるけど
あれってMacの標準GUIの見た目だけカスタマイズしてるの?
それともGUIの仕組み自体を自前でプログラムで作ってるの? swiftでかいてるならだいたいカスタマイズ
unityとかなら全部てづくりかも OpenGLとかMetal使ってるなら手作りするかそれ用のGUIライブラリ使うやろ 詳解Swiftっていまいち詳解じゃないよね
載ってないこと多すぎ 言語仕様という点で日本語書籍でこれより詳解なのある? Apple公式の奴を翻訳してくれたらそれで十分なんだけどな
あれ結構分かりやいいし >>126
ないな
日本語では一番・詳解Swift
って書名なら正しい お、今回はKindle版も同時発売か
でも固定レイアウトなのね 買い替えじゃなくてアップデートされるなら電子版買いたいな >>127 それがあれば一番だね
今回はiBooksStoreにも出てるよー
なぜかKindle版よりちょっと高いけど 本読むくらい熱心なら、変更内容に加えて
経緯から議論まで追える最強のリストを読んでいった方が良い
https://apple.github.io/swift-evolution/
英語直が無理ならChromeのページ翻訳使えば良いし Swift4 変更点
で、検索したら満足できる記事がヒット iPhoneアプリの開発者離れが起きている。
アプリ提出の審査が理不尽で不公平になってしまって、iPhoneアプリの開発者離れが起きている。
アンドロイドにはKotlinが出てきて開発者が増えている。
Guideline 4.2 - Design - Minimum Functionality
アップルのGuideline 4.2の連発で簡単なアプリはもう提出しても審査には通らない。まだアンドロイドの方が通る。
簡単でなく多機能なアプリでも4.2を連発してくる。もはや作為的やっているとしか言いようがない。
開発者は開発情報のみなもとだった。それを閉め出してからiosの勢いがなくなった。
今からiphoneアプリやってもまず4.2で通らない。審査で落とされる。簡単な機能だけのアプリはまずリジェクトされる。
ちなみに複雑なアプリでも同じようなことが起きている。Rssリーダーのようなアプリでも機能が簡単すぎるといわれリジェクトされている。
アップルは信用できない。これは確か。ころころ方針を変える。昨日まで審査に通ったアプリが、今日から通らなくなるというのが普通にある。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f) Appleの審査がウザいのは同意だが、少なくともSwiftって言語自体はよくできてると思うんだがな Swiftの変更も含め、開発者に負担かけすぎなんだよな 68k-> PowerPC-> Intel->ARM
toolbox-> carbon-> cocoa-> ?
pascal-> C-> objective-C -> swift 市場の影響やら色々あってやはりクロスプラットフォームが検討される
そこそこのアプリならCordova(TypeScript)、ゲームならUnity(C#)
Xamarin(C#)、Multi-OS Engine(Java / Kotlin)、Kotlin/Nativeとかもあって
Swiftは立ち位置が辛くなりつつある GoogleがSwiftの開発者引き抜いてAndroidアプリもSwiftで開発出来るようにする
って噂があったけど、あれどうなったんだろうな
少し期待してるんだが https://iphone-mania.jp/news-200890/
>「Swiftは、プログラミング言語がオタクっぽすぎるという認識をもとに作られた。
>学生の多くはプログラミング言語を見て、”これはできない”と思ってしまう」と、クックCEOは語りました。
>
>「誰でも使い方をすぐ覚えられる、Apple製品のようなプログラミング言語をデザインしたかった」と、
>クック氏はSwiftの敷居の低さを強調しました。
Swiftはそこまでじゃねえな。それならAppleScriptぐらいにしないと。 Swiftはいい言語だと思うけど、やっぱこれからは小鳥が主流になるのかな?
Springも5になって対応して、Webもスマホも作れるし BASICの昔から初心者の最初の理解を阻害しているのが
「型」の存在だ。というのは真理ではあるのだけど
「そういうことはオブジェクトに命令とクラスを渡す形にして
普段はあまり気にしなくていいようにしよう」って言語の後継です!つって
「なんじゃかんじゃわからんものになんじゃかんじゃわからないことするんですよ!進歩してるでしょ?」
って言われてもなんじゃかんじゃわからないソースになるだけだよねコレ?というか… 結局型を意識しなきゃコードは書けないと思う。初めてのプログラミング言語がSwiftだった人達が型を意識しないでいいだとかその他の理由でもいいけど、Swiftを分かりやすいと感じているかどうかが気になる。 型ってそんなにわかりにくいかねえ。$には文字列が入って%には整数が入るとか、
当時小学生だった自分にもわかりやすかったけどね。%と!と#の違いはともかく、$はぜんぜん違うものが入るからなぁ。 昔のBASICも型を意識させないようにしてたろ
方法は違うけど Swiftはコーディングにあまり不満はないが、Buildにクソ長くて開発がままならん。
早くコンパイラーを何とかせい >>151
クロスプラットフォームは多かれ少なかれ面倒なところはあるさ >>152
推論させないで明示的に型を書けば早くなるでしょたぶん Swiftの型推論は初動から風呂敷を広げ過ぎた
双方向推論は含めるべきではなかった
右辺値からの推論のみにしておけば型推論に関するビルド時間はここまで掛からなかったはず let a = b( c() ) { d in e(d) }.f().g()
単方向(右辺値から)だと
・c()の戻り値型c_typeを導出
・b(c_type, func_type)の候補が一つになることをチェック
・func_typeからdを導出
・e(d)戻り値型を導出してfunc_typeと型チェック
・b(..)の戻り値型からb_type.f()を導出
・同様にfの戻り値型からg, gからaが決定
双方向だと e(*)の候補一覧からb(c_type, e_type*).f()が成立するものまで探し始める
bの引数の型が決まってない段階で
その絞り込みのためにf、さらにはgまで先読みして推論し始める
時間が掛かるだけでなくオーバーロードやエクステンションが絡んで
Ambiguousエラー出したり
LazySequence.map(..) -> LazyMapSequence<..> でなく
Sequence.map(..) -> [T] の方に間違って確定したりする Swift3で推論に問題あったケースが、知っている範囲ではSwift4で正常になったので
かなり改善されているようだけどビルド時間はさらに犠牲になってそう
コーディングの利便性のために双方向の推論に対応した結果
ビルド時間が掛かり過ぎて型を明示するようになる本末転倒 コンパイル時間が長くなっても、それを補えるぐらいコーディング時間が短縮されるなら、結果オーライだろ >>154
基本昔からほぼ全てにきちんと型定義しているが
ビルドに20〜30分も掛かる。。。
ちょっとコーディングしてビルドすると、
またそのぐらい。。。
ビルド中に編集するとカラーボールがクルクルし出すし。
コーディングする暇がなくてめちゃ困る。
筐体が死にかけていてそうなら、喜んで買い換えるが。
これもAppleの罠ではないかとかと疑心暗鬼
ちなみにMBA2013 4GBね 全ての変数定義に型を明示しても
メソッドチェーンや引数に直接ラムダを記述しているなら型推論は発生している
1ステートメント内に暗黙の型有り
let a:Int = b( c() ) { d:Int in e(d) }.f().g()
極端だけどここまでしないと型推論は多少なりとも発生する
let lm:(Int)->Int = { (d:Int) in e(d) }
let retC:Int = c()
let retB:B = b(retC, lm)
let retF:F = retB.f()
let a:Int = retF.g()
実際にはそのビルドの20分とやらの大半は
一部のボトルネックになってるコードのせいという可能性も高いし
闇雲にステートメントを細分化する必要は無いけど >>159
Pro買えば早くなるだろうけど
その前にビルド時間のボトルネックがあるか探すためにこの辺読んでみるのを勧める
https://medium.com/@johnsundell/improving-swift-compile-times-ee1d52fb9bd
-warn-long-expression-type-checking オプションとかもある 今年2018年だというのに5年前の4GのMBA使って遅いって言われてもなぁ >>148
ダートマスBASIC自体が学生にFORTRANでプログラム教えてたら
INT,DOUBLE,LONGとかの変数の種類の定義と概念で引っかかって
プログラミングの中心概念にサクッと進めないので
わざわざ数値型と文字型の二種類に変数型を固定した言語を作ったんやで。
「FOR-NEXT-STEPでSTEP0.5でも正しい回数回るようにとか苦労しましたw」と
作者がインタビューで答えててびっくりした。本当に高級言語だったんだと。
小学校のリコーダーが超高級木管楽器のプラスチックコピーだと知った時ぐらいの衝撃だったw ビルド時間はSwift 2/Xcode 8に比べりゃだいぶ早くなったと思うけどね
まあそれでもObjCだけのプロジェクトに比べりゃはるかに長いけど >>161
ありがとう。
ボトルネックになってる箇所を探してみようと思う。
素直にMBPに買い換えるべきかな。 iMac Proにしろよ
サクサクだぞ
知らんけど 「型」って言うほど重要なのか?
そもそもその出発点がおかしいんだろうな 重要だろ
整数は大きさで処理速度に影響するし、浮動小数点数はまた専用のプロセッサがある
型のちょっとした違いでアラインメントの影響とかでメモリを占める領域も違ってくるし、ひいては実行ファィルの大きさにも影響してくる
型を意識しないプログラマは半人前ですらない 型を重要と思わないプログラマって、適当にネタ選びやってる寿司職人みたいなもん >>167
個人開発だから購入する勇気が出ない。。。
>>169
同意!
swiftは型推論が売りだろうけど、後々のメンテナンス性だとか、デバッグを考えると型付しておかないと後々の収拾付かなくなるね。
早くこの問題はAppleさんに解決してもらいたい。 >>169
多分それ30年前の知識のまま固執してなぁい?
mem. 1MB とか 1MHz 動作とかw
Int型に文字列突っ込んだら例外飛ばしてくるとか旧石器時代の話でしょ? int型に文字列突っ込んでも問題ない言語とかあるのか? >>171
型を明示することでかえって可読性や保守性が悪くなる場合に省略できるようにするのが、型推論のメリットなんじゃないの?
一番読みやすく保守しやすいコードが、型推論のビルド時間の短縮の為に、読みにくく保守しにくいコードに変えなければならないなら、失敗しているということだろう >>176
int hoge = 'abcd';
まぁ文字列とは違うけど 文字列ではないな
ASCIIで表現した4バイトの数値 >>174
型推論によってBuildが遅くなるのは確かに思想と逆行していることは理解できる。
ただ型を明示することで可読性や保守性を損なっているという感覚が理解できない。
プログラミング入門者だったらまあ納得できるが >>176
int a = (int)"abcdefg";
printf((char *)a);
ってのはどう?
似たようなことして「問題なく」動いている古いプログラムもありそうだけど。 >>179
>>160の極端な例って可読性や保守性が悪くなってない?
型推論が、人間であれば文脈から自明である型を省略可能にすることで可読性や保守性を上げようとすることならば、
理想的ならば省略可能な型の記載をコンパイラの制限で記載しなければならないなら可読性や保守性を下げてることにならないか? $test = 'abc';
$test++;
print $test; -> abd
perlくそワロタ >>184
それと似たようなことは大概の言語でできるだろ 文字がコードとして表現され大小関係もあるから、当然インクリもデクリもできる バージョンコードだけ書き直してアーカイブし直したら全ファイル再コンパイルの憂き目に遭うの何とかならないの
Swift/Objective-C問わず、というかxibとかも再コンパイルされるんでスレチかもしれんが… ☆ 私たち日本人の、日本国憲法を改正しましょう。現在、
衆議員と参議院の両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ プログラミングはじめたばかりの初心者ですけど質問してもいいですか? fileprivate lazy var data: MyData = {
return $0
}(MyData())
( ゚д゚ ) アプリ公開手順がわかりやすいウェブサイト紹介願います swiftってDouble→Dicimalはキャストできるけど、Dicimal→Doubleはキャストできないの?
Dicimalでfmodみたいなのを使いたいけど見つからないから、Doubleに変換して計算しようと思ったんだけど…
>せっかく精度よく計算できるのに、Mathライブラリを利用するためにDouble型に変換しては意味がない。
て書いてあるサイトはあるから変換できるんだろうけど、変換のしかたがわかりません(T T) 基本的にキャストはできないぞ
Double(i)とかで作り直せ >>721
Swift playground 始めたばかりの素人ですが全クリする頃にはiOSアプリ作れるようになれますか?
自分にあった家計簿アプリがなくて作りたいと思ってます >>204
調べ続ける必要が有るけど、簡単なAppなら作る事ができるようになるでしょう macOSのAppをXcodeで作ったんだけどMac App Storeを経由せずに配布したいのよ
デベロッパープログラムにお金払わないと無理? じゃあ autoresizingMask だけで書いてみたら? CGRectの引数のoriginとは何でしょうか?
ドキュメント読んだり調べたりしたけれどはっきりとはわかりませんでした。
Creates a rectangle with the specified origin and size.
明記された原点とサイズを持つ長方形を作る
とは書いていますが、
この”原点(origin)”はその長方形”内”におけるアンカーポイントの位置のことでしょうか、
それともsuperview座標における長方形のアンカーポイントの位置のことでしょうか。
座標の系がわかんねえ
時間がある神が居たらご教示いただけたら幸いです。 >>212
CoreGraphicsでは左下、UIKitでは左上 >>213レスありがとうございます。
ただ、質問がうまくできてなかったみたいで、
聞きたかったことは、originがさすx,yはそのイメージの座標系におけるものでしょうか。
あるいは、viewの座標系におけるものでしょうか。
シミュレーターでoriginの値を色々変えてみましたが、いまいちピンと来ませんでした。 アンカーポイント(回転や拡大でのピン留め位置)はデフォルトでは中央とか
原点とアンカーポイントは別物
原点の位置は213で書いた通り
どこを0,0とするかはメソッド次第、大抵はsuperviewの原点を0,0としたもの
スクリーン原点を0,0とする場合もある
CGRectは単なる数値の入れ物 >>215,>>126
スッキリしました!
ありがとうございます
すごく助かります >>212, >>216です。
助言をいただけたおかげでとりあえずConwey's Game Of LifeをSwiftで
カタチにはできました。
https://qiita.com/TrapedInABottle/items/91635fd7eb3db6ae8a29
ただ、重い。
どこで非効率的な処理をしているか指摘していただける方はいねえがぁ。 >>218
大量描画を高速にするならMetalとかOpenGLとか使ってGPUに描かせないと。 同じ書き方してもMetalでCompute Shaderに置き換えるだけで速くなるよこの場合 どっかに差分分かりやすくまとめてくれないと追いつかない… >>225
ざっと読んだけどあんま変わってねーのな import Foundation
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .full
dateFormatter.locale = Locale(identifier: "ja_JP")
dateFormatter.calendar = Calendar(identifier: .japanese)
print(dateFormatter.string(from: Date(timeIntervalSinceNow: 60*60*24*30)))
令和まだか Result type@Swift5のuse caseが判らん。 丸2年Swift勉強してきたが(合間合間に)まだ1つもアプリリリースできてない。しかし不思議と飽きない、ところでSwift2の本があったのでそれ見てコード写して勉強してるがエラーだらけで …こんなのやるだけ無駄かな? これは意味なさそうやな…リリースする時は10個位まとめて出した方がええからとおもて時間かかるんよなぁ 先ずは何でもいいから一つ完成させろよ。
アレもコレもと手を出していると、いつまで経っても完成したものができないぞ。 丸二年勉強してて今時Swift2のテキストからコード拾ってるってちょっとどんな状態なのかイメージ出来ない。
もし英語にアレルギーなければ↓のサイトで最新バージョンで一通り勉強できるよ。無料だし
Hacking With Swift 100days of Swift
https://www.hackingwithswift.com/100 ほとんど書籍からしか勉強してなかったから そんな動画もいいね 基礎的な事から紹介されてる様だ
いまスマホだから帰ってから見るわ ありがとさん 動画は補助だね。
テキストがメイン。
効率的に記述できる技なんかも織り混ぜつつ、覚えた方が良いコードは敢えてリピートに入れずに徹底的に手で書かせてくれる。
そんな箇所を後で自分なりに書き直してみたりと、かなり美味しい。
よく考えられた教科書だよ。 アプリリリースって審査を通すがかなり大変じゃない?
大手のバグフィックスリリースも含めて、全体の通過率4割じゃなかったっけ?
そういったものを除いた新規のもののみだと通過率がかなり厳しそう。 >>234
ちょっとプログラムに興味あるけど
初学者とかでもこの人の動画大丈夫? >>238
お勧め。
動画は補助で、メインはテキスト。
全くの初学ならiBooksストアからダウンロードできる「Swiftによるアプリケーション開発:入門編」あたりをやっておくと良いかも。これ、残念ながら内容が少し古いんだけど、基本の部分は通用するし、レッスンがインタラクティブでわかりやすい。 >>239
ありがとうございます。ちょっとがんばってみます!
英語の人聞き取りやすいし1日1時間のコンセプトもすばらしい
その前に入門編みてみます 英語大丈夫なら、やはりiBooksストアからダウンロードできる「App Development With Swift」の方が内容は新しい。 >>227
なぜかPlaygroundだとダメなんだよな。
iOSアプリだったらシミュレータ、実機とも問題ない。 >>243
つXcode11(+macOS10.15) ほんとだ
PlaygroundでもmacOSだと
"令和元年7月7日 日曜日¥n"
で、iOSとtvOSだと
"平成31年7月7日 日曜日¥n"
だな
バグ報告しなされ つうか、シミュレーターのバージョンがiOS12だと平成
iOS13だと令和
これはXcode10でも11でも変わらない
playgroundはXcode10では平成
Xcode11では令和 11で治ってるならバグ報告要らんね
Bug Reporterがいつの間にかFeedback Assistantにリニューアルしてる SwiftUIはDateFormatterのロケールに未対応 バカみたいな質問だが、アプリ作る時で分からない無い時 公式のリファレンスで調べたりまたはプラグインを導入もやるのが普通なのかな?
自分は欲しい機能がありどう書けば分からなければ ググってコードをコピペして書いてるのだがこれはアホみたいな作り方で非効率なのかな? 見つけたコードを読んで理解できてるなら良いんじゃない? むしろリファレンスだけでコードを書くのはかなりの非効率
動いてる実績のあるコードをコピペしたほうが5倍ぐらい速い
どんなSDKでもサンプルコードがついてるのはそのため
ドキュメントにAPIのめちゃくちゃ細かい挙動まで記述するのは、書く側も読む側も負担が大きい
API一覧から初期化時に呼ぶべきメソッドを抽出するためには、極論全部のメソッドの解説を読まなくちゃいけなくなるし
ただ、>>250の言ってるように、コピペしてわからないところを放置しないというのは大事だと思う >>250
>見つけたコードを読んで理解
盗んだバイクで走り出すのメロディーで読める リファレンスもプロパティとメソッドの一覧とか引数となるクラスへのリンクくらいは整備してくれると有難いんだけどなぁ... Appleは英語圏以外のプログラマーを増やそうとは
思っていないのかな。
デベロッパー向けのリファレンスやメールなど
英文多いですよね。
例えば日本の子供達がSwiftを学ぼうと志しても
プログラミングよりも先に英語でつまずくと思う。 その為にiPadでplaygroundが用意されている プログラミング言語そのものからして、英語をある程度知らなきゃ、機能などが想像できなくてキツイよ。
若年層のコーディング教育は、まずは単純な動作のコード化から、手続き記述、組織化などを学ばせる方が良いと思う。そこではプログラミング言語なんて使わない。
日本人は大人でもこの辺りが弱い人が多い。 プログラミング言語を使わないってのはちょっと語弊が有るか...
導入は自然言語で行って徐々に語彙と文字を制限した環境に移行してルーチン基準を学ぶ辺りから専用の言語環境を用いる様にしていくイメージ。
日本語ベースで。
オブジェクト指向の言語をベースに日本語に置き換えて行けば叩き台は出来ると思う。 PC上で走らすもんじゃないから、リアルの「辞書」みたいなものを想定してる。
国語、というか純粋に「言語」教育。
日本の言語教育プログラムには、書式の理解や作成とか事象の分析的・客観的記述とそのデコードといったカテゴリが抜け落ちてる。
小学校から高校くらいまでのスパンでしっかり教育すべきなんだけど。
その辺りが身についていればVBAマクロくらいはもっと多くの人が記述できるようになるよ。 実務優先でDBやらせる。
iTunesとSwift(スクリプト)でプレイリスト作成とか Xcode10.3からXcode11.1へupdateした。
macOSはMojave10.14.6のままで。
SwiftUIを初めてさわってみた。
UIKitを置き換えるFrameworkだなんて知らんかった。
数年後にはimport UIKitすればdeprecatedって警告されるのか?
とりあえず、link compilation
https://github.com/Juanpe/About-SwiftUI >>264
>数年後にはimport UIKitすればdeprecatedって警告されるのか?
これマジこうなるからワロエナイ 今更ながらWWDC2019の動画みてる。
WWDC 2019 _ Full - Platforms state of the union.
これ、超重要かも! >>267
SwiftUIってUIKitと同時に使うもんだと思ってたけど、違った。
外付けのUSB-SSDへCatalinaをinstallしてXcode11をinstallしたほうが良さそうだ。
Xcode11@MojaveだとCanvasが動かん。 >>267
こっちか!
https://developer.apple.com/videos/play/wwdc2019/103/
Platforms State of the Union
WWDC 2019 Platforms State of the Union
こんなResourceがあるなんて知らんかった。 >>268
APFSでディスクに余裕があるなら別ボリュームにインストールする方法もある。 >>270
THX
USB-SSD接続してinstaller起動した。
今ココ
macOS Catalinaをインストールするには再起動… Catalina install memo
1. reboot回数: 5
2. 残り時間を計算回数: 3, 16min, 1min, 15min
3. 最初の再起動直前から、ようこそ画面出現までのの時間: 22min
外付けSSD, 960GB, 3分割(2:1:1)した最後の区画(APFS)へinstall
久しぶりに新規installしたけど、設定が大変。
マウス感度とか、IMEの設定とか。 ❶@Stateを利用するには、Model側(Observable側)の下ごしらえが必要で
1. Observable準拠が必要
struct Order: Observable {
var includeSalt: Bool
…
}
2. プロパティー宣言時に@State属性付与
@State private var order: Order
❷ViewModel側(Observer側)で値の変更通知を受け取るには$マークの付与をインスタンス変数にする
$order.includeSalt
って事か? >>272
CatalinaをinstallしてXcode11が動き始めたが、逆に動かないアプリを発見。
El media Playerで再生しようとしたswfファイル(TOEIC問題集)が動かない。
どうしよう?
外付けUSB-HDDにSierraをinstallしておくかぁ。
超、面倒だ。 >>276
Sierra install直後のDisk Usage: 20.31GB
createinstallmediaコマンドでUSB2 Pendriveにinstaller作成: 26min
reboot回数2回
install中残り時間15minと表示後、9.5minでrebootが掛かり、「ようこそ画面」が出現 やべ!
今更ながらWWDC2019 Keynote Speech見たけど、冒頭で感動しちまった。 なぜclassよりstructが速いのか?
なぜ、class UIButtonよりstruct Buttonが速いのか?
答え:
ある関数に値を渡す処理を記述する際、参照渡しは速いと教わる。値渡しはコピーに時間が掛かって時間を食うのだ。
しかし、関数内でその値に何度もアクセスする場合に、アクセスのたびに、参照先を見に行く処理が参照渡しには生じる。このため、参照渡しは遅くなる。
値渡しは、スタック内で処理が完了し、速い。
http://nex2t.blog.shinobi.jp/c言語/値渡しとポインタ渡しで実行速度比較-c言語-
だから、UIKitよりSwiftUIが速い。PlayGroundの用に、CanvasでLive Renderingできる。 >>279
Introducing SwiftUI: Building Your First App, 17m10sec around >>280
やっと見終わった。
Introducing SwiftUI: Building Your First App
Safariで再生すると途中で止まる。
Chromeで再生すると解像度が低いのでソースがボヤける。
RoomsアプリのソースはGithubにあるのかな? 順番からは次見るべきは
SwiftUI Essensials
けど、関心のある
Data Flow Through SwiftUI
を見ることにする。
Property Wrapperの@State, @ObjectBindingの使いかたとか、
Identicalプロトコルが知りたい。
Xcode起動して、Help, Developer Documentationとして検索してもヒットしないぞぉ? >>282
ObjectBinding、ってのは俺の勘違いで、
ObservedObjectってのが正解らしい。Developer Documentationでもヒットした。
しかし、Dash.appではヒットしない? >>283
と思ったら、ObservedObjectはDash.appでもヒット!
落ち着け、俺! >>282
Identicalではなく、Identifiable Protocolだった。
これは簡単。
struct User: Identifiable {
var id: UUID = UUID()
var firstName: String
var lastName: String
}
let a = User(firstName: "OK", lastName: "NG")
print(a.id)
おっと、これが、Terminal.AppだとStack dumpを吐くのに、XcodeのPlaygroundでは上手く動く。なんで? >>282
Data Flow Through SwiftUI
イタリア人の英語はワケワカメ
e.g.
Enviroment = エンバイロメンタ ただでさえSwift人口少ないのに、お前みたいなキモいのがいるとますます減るだろがバカ >>287
Data Flow Through SwiftUI
これ見終わった。
Data Flow Through SwiftUI
これ、冒頭見てつまんなかったので、
Combine in Practice
Combineの実際、Combine Frameworkってimport Combineするのか?
これ見てみる。 >>289
Combine in Practice
これ、ムズかった。
Promiseは非同期処理の最終結果。
Futureってなんだ?
debounceってのはハードウェア・スイッチのチャタリング防止装置をソフトウェアで実現したものって感じか?
@Published を付与すれば一撃でPublisherへ変身させる事ができるっぽい。
Promiseは良いとして、Future, Justって何だ?
ここに、解説があるっぽい。
https://dev.classmethod.jp/smartphone/swift-combine-framework-for-beginners/ >>290
>Combine in Practice
こいつをみる前に
Introducing Combine
これを見るべきだったかも。
Reactiveプログラミング系のオブジェクト生成用の属性には、2種類あるみたい。
1. 非Combine系(import Combine不要)
2. Combine系
後者には、
Publisher, Subscriber, Operator
が含まれる。
前者には、State, Environment, Bindingとかあるっぽい。 >>279
UIButtonがViewに対してButtonがCellになっている
ように感じるのだが。 >>279
参照渡しも値渡しも結局はメモリ上に構造体のようなものを置いているのなら、それの先頭アドレスから
何バイト先を見る、ってのが特定のメンバ変数を見るための実際の処理だろ。
それだけで考えたら、その領域がスタックだろうとヒープだろうとその速度に違いがあるとは思えないけどな。
違いがあるとすればキャッシュに載ってる可能性が高いかどうかぐらいじゃないの?
スタックのアクセスのほうが速いとする根拠は何? >>293
1. 参照渡しの場合に構造体メンバ変数へアクセスする場合:
構造体へのアドレス - > メンバ変数へのアドレス - > その値
2. 値渡しの場合に構造体メンバ変数へアクセスする場合:
メンバ変数へのアドレス - > その値 ViewControllerどこ行った?
override func viewDidLoad() は? 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)})