Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@tea63

[Tips]初心者向け XCodeやSwiftで困ったときの解消法

環境

macOS:Catalina 10.15.6
Xcode:12.0
Swift:5.3

筆者について

趣味でswiftを勉強中の只のエンジニアです。仕事では全く使っていません。
swiftは2015年頃に一度勉強していて、最近再燃して勉強し直しています。

1.Stack Viewの制約がうまくつけられない

spacingの値に0以外の値が入っていると制約に影響が出てしまうようなので、
spacingには0を入力した方が良いです(制約に影響が出ない箇所なら可)。
スクリーンショット 2020-10-18 19.50.23.png

2.新しいクラスを作成しプロトコルを継承すると、警告が出る。

Cannot declare conformance to 'NSObjectProtocol' in Swift;
と言って怒られます。
この場合、import Foundationした上で、NSObjectを継承すれば解決です。
私の場合、import Foundationを削除した上で試行錯誤していたので、大変でした。

3.ビルドエラー

Multiple commands produce XXXが発生。
詳しく見るとTarget [アプリ名] has copy command from XXXTarget [アプリ名] has link command with output XXXが発生。
少し調べてみると何かが衝突しているようだった。.swiftファイルをXCode上で手動コピーしたのがまずかったのかと思う。
よく分からなかったので、プロジェクトを作り直すことで解決した。
XXX.swiftMain.storyboardFinder上で、旧プロジェクトフォルダから新プロジェクトフォルダへコピーすることで解決した。
Main.storyboardの場所が一瞬分からなかったが、Finder上では.../[アプリ名]/[アプリ名]/Base.Iproj/の中にある。

4.オブジェクトを比率で上手いこと調整したい(高さ40%のTableViewなど)

こちらのサイトが参考になります。

5.テキストが改行されない

改行コードを入れて任意の箇所で改行させたいが、改行されない。
¥nではどうも効かないようで、\nと入力する必要があった。
\optionキーを押しながら¥を押下で入力できる。

6..swiftファイルへOutlet接続、Actionができない

遷移先など新しくViewControllerを作成し、最初からあるViewControllerと同じようにびよーんと接続をしようとしたが、Object項目がExitしか選択できない。
スクリーンショット 2020-10-24 21.32.08(2).png

Storyboard上で対象のViewControllerを選択。
Identity InspectorCustom ClassからViewControllerに対応するクラスを選択する。
(画像は修正後)
スクリーンショット 2020-10-24 21.37.51(2).png

7.TableViewを外出しできない

ViewControllerの肥大化を防ぐ為、UITableViewDelegateUITableViewDataSourceを継承したクラスを別途作成し、そのクラスに処理を委譲することができる。
この場合、気をつける点がある。
委譲する先のクラスのインスタンスはviewDidLoad()の外で生成する必要がある。
まあ、少し考えてみれば当然だが。
委譲先をViewController(自分)にする場合は、viewDidLoad()の中でインスタンス生成しても問題なく動く。
本題とずれるが、タイミングなどの問題でインスタンス生成をviewDidLoad()の中でやりたい場合(何かの処理の後にしたい場合)、viewDidLoad()の外側で変数宣言だけしておき、viewDidLoad()の中で代入すれば問題ない。

8.ビルド時にCommand CompileAssetCatalog failed with a nonzero exit codeが発生

私の場合複数の画像ファイルを使用しており、数十枚程度ならエラーは出なかったが、ある1枚のファイルを追加するとエラーが発生、という事象が発生した。
調べても原因が分からなかった(OSXCodeは最新化したら解決するという記事もあったが解決しなかった)。
ひとつ心当たりがあって、pngファイルをjpgに変換した画像をAssets.xcassetsに追加していたのがマズいのではないかと思い、そのままpngで保存すると、大丈夫なようだった。
使用している画像ファイルが多く、最終的に解決しているか不明である為、参考程度にして頂きたい。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tea63

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?