サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
qiita.com/codelynx
./configureはcodegen.swiftを実行します。別に、このcodegen.swiftを直接走らせてもかまいません。同フォルダにAES256.swiftがある事を確認してください。 実行すると、同フォルダ内にCredentials.swiftが生成されます。このソースファイルをXcodeのプロジェクトに組み込みます。しつこいようですが間違ってもcredentials.plistを組み込まないでください。 ちなみに、のちにcredentials.plistを変更した場合は./configureを再度実行し、Credentials.swiftを再生成します。 Using Credentials Credentials.swiftを組み込んだら、これで秘匿情報をアプリで取得する準備が完了です。 import Foundation import CommonCrypto struct
はじめに 最近 iOSでアプリ内課金で自動更新のサプスクリプションをの実装を行いました。その時に、Web でどうやってレシートの検証を行うかを検索しました。 • レシート検証 プログラミングガイド(PDF) • レシート検証 プログラミングガイド(Web) • In App Purchaseのレシートをローカルで検証できるようになった話(Qiita) • iOSの月額課金レシート検証をサーバーサイドで行うときのTipsまとめ(Qiita) • iOS In-App Purchase実装で必ず知っておきたい隠れた罠(Qiita) • Apple App Store Receipt Validation with Swift and Go • Local Receipt Validation for iOS in Swift From Start to Finish • Validating
do { let url = URL(string: "https://www.apple.com")! var encoding = String.Encoding.utf8 let text = try String(contentsOf: url, usedEncoding: &encoding) print("contents: \(text)") } catch { print("error: \(error)") } dnssd_clientstub ConnectToServer: connect()-> No of tries: 1 dnssd_clientstub ConnectToServer: connect()-> No of tries: 2 dnssd_clientstub ConnectToServer: connect()-> No of tries: 3
今回は、UIBezierPath をコードで計算して表示する方法を紹介したいと思います。現実的には iOS や macOS であれば、UIBezierPath なり NSBezierPath を生成して、stroke() するだけでいいのですが、どうやってその座標を計算しているか気になる型は参考にしてください。 Bezier Path は以下のような ベジエ曲線または直線を組み合わせたものです。下図の P0から P3の間に、コントロールポイントと呼ばれる P1、P2 を設け滑らかに曲線を描きます。 計算のイメージは言葉で説明するより図になっている方がわかりやすいと思うので、GIF アニメーションを引用します。 https://upload.wikimedia.org/wikipedia/commons/d/db/Bézier_3_big.gif これを swift で計算してみる事にしまし
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration) let url = URL(string: "https://domain.com/contents")! let task = session.dataTask(with: url) { (data, response, error) in if let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) { // your code here!! } } task.resume() さて、今回は電子書籍で大量のコンテンツをダンロード、もしくはニュースアプリやゲーム
前回こんな記事を書きました。 Swift 世代の排他制御 http://qiita.com/codelynx/items/0ecd28c8a7da0a0e42b5 この記事では、以下のような排他制御の書き方を紹介しました。NSLock を使えば、複数のスレッドからクリティカルなデータの同時更新を防げるという話でした。具体的には、NSLock を lock() してから unlock() するまでは、他のスレッドは待たされるので、atomicity が保証できるという話です。しかも、defer 文を使えば、スコープを抜けた時に、確実に実行されるので、途中でいくつもの return 文があるようなパターンでも、実行し忘れがなく、安全という事です。 class MyObject { let lock = NSLock() func update1() { self.lock.lock() def
Swift に限った話ではありませんが、クラス名や変数名に Unicode が使えるようになってきました。🐶や🐱を変数にするのも結構ですが、もっと日本語を積極的に使っていけば、開発や保守が楽になるケースがあると考えていました。今回、日本語を積極的使って Swift でプログラミングする話をしたいと思います。 そもそも何に日本語を使うの? 以下に何に日本語が使えそうかを示します。 変数名 定数名(不変変数名) クラス名、タイプ名、列挙子名 コメント 関数名、メソッド名 名前に日本語を使うとどこがいいのか? 1. 専門用語が明確になる 例えば、以下のような用語の機能を実装する必要があったとします。みなさんならどんな風にコーディングしますか?ちゃんと英訳して、名前をつけますか? 確定申告 月末締め翌々月10日入金 瑕疵担保責任 無担保コール翌日物 そもそも、その英語の名前、英語圏の人が見て、
Framework アプリを横断して同じコードやViewにViewControllerクラスを使いまわしたい時は時折あると思います。旧来は ソースそのものを使いまわしたり、static library を作って使いまわしていた事と思いますが、Swift時代では、そもそも Swift のコードは static library が作れなかったり、ViewController だけでなく、.xib (.nib) や storyboard を使いまわそうとすると、static library では無理があります。 iOS8 からは Framework が使えるようになりました。Frameworkはコードだけでなく、storyboard や画像などのリソースを含める事が出来。そして Header ファイルを含める事ができるので、使い回す側のクライアントサイドへ class 名や API を引き渡す事
将棋盤Kit Swift 3.0 に対応しました。記事内の説明は一部 2.2 の場合があります。追ってアップデートしたいと思います。 日本の将棋はルールが複雑でプログラミングには大変扱いにくい課題の一つだと思います。Swiftの登場で、複雑難解な課題のコード化もきっと書きやすくなるだろうと思い、本将棋の基本的なルールや挙動を実装するフレームワーク「将棋盤Kit」を開発してみましたので紹介したいと思います。 まず、最初にはっきりさせておきたいのですが、将棋盤Kitは以下の事を目指してはいません。 グラフィカルなユーザーインターフェースを提供する 人工知能の実装 しかし、将棋盤Kit はそんなグラフィカルなユーザーインターフェースの実現や棋譜の研究さらに将棋の思考エンジンを実装しようと考えた場合に、便利となる基本的なルールの実装を目的としています。全く個人的なSwiftの技術探求との噂も。 ち
class ZStrongToWeakMapTable<K: AnyObject, V: AnyObject> { let mapTable: NSMapTable init() { self.mapTable = NSMapTable.strongToWeakObjectsMapTable() // <== Here !! } subscript(key: K) -> V? { get { return self.mapTable.objectForKey(key) as? V } set { self.mapTable.setObject(newValue, forKey: key) } } var description: String { return mapTable.description } } さて、これには、全部の4つのバリエーションがあります。なるべく、重複したコードを
UIPageViewController 八つの掟 結構理解しているつもりだった UIPageViewController でしたが、毎回同じようなところで何度もハマるので、忘れる前に記憶の整理を兼ねてメモしておく事とします。 一、PageCurl と Scroll を動的に変更したい場合は、InterfaceBuilderではなく、コードで作成すべし transitionStyle は readonly なので、InterfaceBuilder でインスタンス化させると、transitionStyle は変更できません。それで PageCurl と Scroll を動的に変更したい場合は、自分の ViewController 内に、コードでインスタンス化させて追加します。そうすれば、変更したい場合は、UIPageViewController 自体を一旦削除して作り直す事ができます。
このページを最初にブックマークしてみませんか?
『@codelynxのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く