Tag: 迅速

Monaca现在提供Cordova 7.1支持

我们的开发团队自豪地宣布,摩纳卡的Cordova 7.1支持现已准备就绪。 有了此最新支持,摩纳哥即可使用Android Oreo和Swift 4.0。 从2018年1月24日开始 ,所有新创建的项目将自动使用Cordova 7.1。 Cordova 7.1支持中的新增功能 Android的主要更新 Crosswalk插件支持已弃用。 Cordova Android平台从6.2.3更新到6.4.0 (API级别26)。 Gradle版本从3.2更新到4.3.1 。 需要Android 5.0或更高版本。 iOS的主要更新 Cordova iOS平台从4.4.0更新到4.5.4 。 Xcode版本从8更新到9 。 需要iOS 9.0或更高版本。 Monaca调试器 需要商店版本Monaca Debugger 7.0或更高版本。 升级到Cordova 7.1 为了升级现有项目,只需执行以下操作: 打开您要升级的项目。 从顶部菜单,转到Config → Manage Cordova Plugins 。 单击Upgrade to 7.1.0链接,如下图所示: 升级项目将改变平台要求并更新插件; 因此,有可能会影响应用程序的行为。 其他注意事项 降级项目 升级后的项目不能降级到任何以前的版本。 在执行升级之前,将创建当前版本的备份。 如有必要,请使用备份版本。 有关商店版本调试器的警告 为了调试Cordova 7.1项目,请使用Monaca Debugger […]

Project6.2的借调

今天是Project6的第二天,事情开始融合在一起。 在使用NSplitView和Autolayout解决了将近3个小时之后,我终于找到了一个可行的解决方案,并且拥有Twain的裸露功能版本。 甚至更好的是,我们有基本的操作转换代码存储到Realm并编译以记录内容。 到目前为止,它在构造和解构所记录的笔记时效果很好。 还剩什么? 搜索,智能标记(将URL转换为卡片,嵌入图像,样式功能)和一些UI修饰。 注释标题尚未实时更新,并且updateAt时间戳未在父注释模型上同步。 仍然工作了2天,看到一个半可用的原型还是很令人信服的。 不好的事情:Realm不支持Swift本机类型,我忘了在类vars中添加动态功能,并且遇到了一个奇怪的问题,即打印对象将显示正确的值,但是直接读取var总是提供默认值。 NSSplitView是一个无法比拟的时间消耗。 今天花费的时间:3个小时的NSSplitView,2个小时的功能开发 总开发时间:7小时

使用SceneKit的基本3D游戏

场景套件 FrameworkนFrameworkที่เข้ามาช่วยสร้างเกม3Dงายขึ้นlyรื่องของ动画,物理,粒子和逼真的实体พูดง่ายคือSceneKitเปรียบเสมือน游戏引擎 Sceneารที่เราจะสร้างเกมเพื่อแสดงผลบนSceneKitViewนั้นก็เป็นเหมือนกับViewทั่วไปาก็สามาถลามนมButtonView,LabelViewื่อื่นๆดังตัวอย่าง Kitต่Kit Kit Kit Scene View D D D D D D D D D D D D D D D 3D Object ก่อน งากนั้นลองสร้างBoxเปล่าๆนขึ้า 2นได้ว่าเป็นกล่องขาวTextureรรมดาเราสามารมาTexture 2Dเข้ามาใส่ให้สวยๆารSetเข้าไปที่材质ได้ดังนี้ ใช้นิคการใช้场景 ใช้按住鼠标单击และลาและลายขวาหรือบนล่างมันจะหมุนไปรอบตัวเอตัวเงา向上/向下滚动มันจะเป็นการเลื่อนขึ้นลงแต่ถ้าเราอยาก放大/缩小ให้ทำการกดปุ่มOptionและ向上/向下滚动 **相机相机相机相机3D对象相机相机相机มันก็จะไม่เห็น 设置摄像机的位置ให้อยู่ตำแหน่ง0,0,0ก่อน งาง3D对象ถัดเข้าไปจะได้เห็นได้ชัดเจน 设置场景scene SceneKitView sceneView.scene = SCNScene(名称:“ FirstScene.scn”)! ก允许摄像机控制3ราขามารถเลื่อน3D Objectของเราได้บนมือถือแล้ว ผลลัพธ์

使用Decodable进行JSON解析

JSON是通过网络发送的最常用的数据格式。 在Swift 4之前,使用JSON是iOS的头疼事。 Apple提供了JSONSerialization类来处理JSON响应,但是JSONSerialization的问题在于,它只是将字符串响应转换为合适的NSArray或NSDictionary对象。 将字典转换为对象快速类别或目标C类是我们的责任。 所有这些手动工作都由一些非常流行的第三方库(如SwiftyJSON , JSONShootout等)解决。SwiftyJSON是我的最爱之一。 所有这些库在内部都使用反射,将JSONSerialization的输出转换为对象。 Swift 4通过Codable使一切变得简单,并终止了这些第三方库的使用。 可编码使我们能够解码和编码对象。 它可以与类,结构以及枚举一起使用。 在本教程中,我们将专注于解码响应并将其转换为快速对象。 以下是我们将在本教程中使用的一些关键术语。 关键术语 可腐烂 协议是可解码的。 如果要从JSON解码对象,则您的类或结构需要符合此协议。 2.可 编码 该协议是可编码的。 如果要将对象编码为Data,则您的类或结构需要符合此协议。 3.可 编码 可编码是可编码和可解码的组合协议。 如果您需要在应用程序中对对象进行解码和编码。 与其同时符合可编码性和可解码性,不如使其符合可编码性。 4. JSONDecoder 用于从JSON数据解码对象。 注意。 您的类或结构必须符合Decodable协议。 5. JSONEncoder 用于将对象编码为数据。 注意。 您的类或结构必须符合Encodable协议。 可编码有一些限制。 它仅限于某些基本数据类型,而有些则是高级数据类型。 这是我们在声明支持可编码的类时可以使用的所有数据类型的列表。 让我们从例子开始。 解析简单对象 班级人员:可腐烂{ 变量名称:字符串 变量年龄:整数 } 让jsonData =“”“ { “名称”:“ John Doe”, “年龄”:24 } […]

关闭

闭包คือ功能ที่ไม่ต้องประกาศชื่อ功能ไม่ต้องมี关键字Funcนำหน้า……..เพื่อนๆอาจเกิดคำถามว่าเพื่ออะไร? Functionาๆงั้นเรามาดูต่อกันว่าไอเจ้า功能พิลิกกึกกือแบบนี้เราจะใช้มันในสถานการณ์แบบไหนได้บ้าง 闭包จะใช้ในกรณีที่เราอยากส่ง函数ไปเป็น参数ของอีกFunctionหรือให้函数。 Returnาร返回函数ออกมา…ยิ่งพูดยิ่งงงมาลองดูตัวอย่างกันดีกว่า 复仇者联盟3英雄级别英雄级别英雄级别英雄级别 英雄级{ 在里面() { 打印(“我是英雄”) } funcpunch() { 打印(“我可以打孔”) } funk kick() { 打印(“我可以踢”) } } งใช้องใช้Heroของเรากันดู let ironMan = Hero()//我是英雄 ironMan.punch()//我可以打孔 ironMan.kick()//我可以踢 จะให้ราวนี้เราจะให้Heroของเราสามารถเรนยนรู้สกิลใหม่ๆมาใช้งานได้เช่นน,ยิงจรวด,ยิงเลเซอร์,หายตัว,เปิดเกราะกำบัง…。 สกิลอีกมากมายนับร้อยสกิล………..อืม…มีสกิลมากมาย….. าเป็น绿巨人ก็ไม่จำเป็นต้องบินได้แปลว่าในแต่ละHero。 ังไงดีกักักักักัๆกแบบคลๆ งาลองทำกันเริ่มจากสร้าง关闭技能ต่างๆไว้ดังนี้ var fly:()->()= {()in print(“ i can fly”)} var fireRocket:()->()= {()in print(“ Locktarget-> Fire the rocker-> Boom!”)} เพิ่ม功能使用技巧ใน类英雄ของเรา 英雄级{ 在里面() { 打印(“我是英雄”) } funcpunch() […]

Swift:关闭-已捕获列表

尊敬的开发商, 欢迎使用,今天我们将研究什么是闭包捕获列表以及如何快速使用它。 例子1 如果您曾经看过上面的代码,并且想知道[]之间的hack是什么,或者您无法理解,则可能是数组之类的东西。 这只是关闭捕获的列表。 不要强调[弱者],一旦完成本教程,您将能够解决这个谜团 让我们从一个简单的例子开始 例子2 闭包打印不同的值,因为闭包引用了变量“ a”和“ b”。 是闭包是引用类型,当值更改时闭包将反映出来。 有时,如果您的变量发生更改并且闭包引用了该变量,那将是非常灾难。 让我们通过示例来了解这个问题。 例子3 在上面的示例中,我们创建了一个闭包数组。 闭包不带任何参数,也不返回任何东西。 接下来,我们向闭包数组{print(i)}添加一个值 我们何时迭代并像这样调用闭包。 您能猜出输出是什么吗?……,嗯,如果您认为输出将是1 2 3 4 5,那么这里就不是这样了。 输出将是 所以这里出了什么问题,孔闭合是在执行for循环后引用i的最终值, 即 5 解决方案:让我们回到我们的第一个Example 2类型。 上面的闭包与示例2相同,但是差异[c,d]很小,您可能将其与数组混淆。 让我解释一下,当您在[ in ]之前的[]中输入变量时,闭包不再引用原始值,而是创建自己的变量副本,这称为C aptured list。 因此,即使您更改了原始值,闭包也不会反映该更改。 因此, 示例3的解决方案是 现在每个闭包捕获每个循环中j的当前值,因此当我们迭代数组时,输出将为0 1 2 3 4。 有时我们可能想为捕获的变量使用不同的名称,我们也可以像上面的示例一样更改。 在上面的示例中,我们采用了一个新的变量“ capturedJ”,好像我们不想知道原始值来自何处。 消息:我没有在本教程中介绍什么是“弱自我”,因为我将以“带有闭包的内存管理”的形式对此进行介绍。

使用迭代器协议的斐波那契序列

Swift中的迭代器协议是任何序列的for-in循环背后的驱动力。 确认序列协议的任何类型(例如数组)都应提供自己的迭代器。 因此,斐波那契数列的实现看起来像这样 类别FibonacciSequence:Sequence { func makeIterator()-> FibonacciIterator { FibonacciIterator() } } 迭代器跟踪其迭代过程,并在序列中前进时一次返回一个元素。 迭代器必须实现next()函数,该函数返回序列的下一个元素。 struct FibonacciIterator:IteratorProtocol { var(firstNumber,secondNumber)=(0,1) 变异func next()->整数? { (firstNumber,secondNumber)= (secondNumber,firstNumber + secondNumber) 返回firstNumber } } next()函数计算斐波那契数列中的下一步或下一数字。 现在我们可以在for-in循环中使用FibonacciSequence 让fibonacciSequence = FibonacciSequence()。prefix(5) 用于fibonacciSequence { 打印(数量) } //打印1 1 2 3 5 注意,FibonacciIterator是无限迭代器,没有终止条件。 可以使用条件(例如序列的最大长度)或任何其他终止条件来终止序列。 例如,我们可以使用以下代码生成最多50个斐波那契数 let fibonacciSequence = FibonacciSequence()。prefix {$ 0 <50} 如果要实现迭代器,并希望在迭代器级别控制序列的终止,请添加终止条件 struct FibonacciIterator:IteratorProtocol […]

代码结构和可读性第2部分-类和结构

欢迎回来,在第1部分中,我们介绍了一些基础知识:变量,数据结构和函数。 代码结构和可读性第1部分—变量,数据结构和函数 如果您来自我的有关结构和可读性的Swift编程文章,那么您已经知道一些基本知识…… medium.com 我们学会了一些清理它们的方法,但是现在我们继续前进。 我计划这次对您轻松一点,因为我们在这里只讨论类和结构。 如果您不了解类或结构,建议您阅读我为Swift写的一篇文章。 不用担心Swift不是您的语言,如果您的语言支持它们,那么足够通俗易懂,足以让您掌握类和结构。 类和结构 让我们从那里抛出一个示例类开始。 公共类动物{ 命名:字符串 让收藏夹食物:字符串 变量年龄:整数 让countryOfOrigin:字符串 init(名称:字符串,最喜欢的食物:字符串,年龄:整数, countryOfOrigin:字符串){ self.name =名称 self.favoriteFood =最喜欢的食物 自我年龄=年龄 self.countryOfOrigin = countryOfOrigin } } 当然,我们可以将其更改为struct并忘记初始化程序,但是我要使用一个类,因为让我们面对现实吧,即使您尝试使其具有可读性,也有点草率。 老实说,当结构可以使用时,我尽量不要使用类。 我不必担心初始化(除非我想),我不必担心参考周期(除非我要进行极端优化),并且我的代码库要小几行。 那么我们可以使用类来解决这个问题吗? 好吧,确定间距确实有帮助,所以让我们从这里开始: 公共类动物{ 命名:字符串 让收藏夹食物:字符串 var age =年龄 让countryOfOrigin:字符串 init(名称:字符串,最喜欢的食物:字符串,年龄:整数, countryOfOrigin:字符串){ self.name =名称 self.favoriteFood =最喜欢的食物 自我年龄=年龄 self.countryOfOrigin = countryOfOrigin } } 一点间距与此很长的路要走。 但是我认为我们可以做得更好。 每当我的代码看起来像这样的部分难以阅读时: … […]

夏休みの思い出にVaporでAPIを作ってみた

Qiita Pocketという先日リリースした自作iOSアプリで,どうしてもアプリ用のAPIが必要になり,Server-Side-Swift(以降,SSS)フレームワークのVaporを使ってみました。 SSS楽しいよ!というお话しです。 自作APIが必要になった経纬 もともとの自作iOSアプリ要件はこんな感じでした。 Qiitaの投稿のストック数ランキングが见れる 周间ランキングが见れる 月间ランキングが见れる タグでフィルタしたランキングが见れる API実装前のアプリは,アプリだけ作だけQiitaから提供されているAPIをコールしてストック数を元にランキングを生成するだけでした。 がかかりすぎてので,月间のランキングをその场で取得しようとすると时间がかかりすぎて3.の要件を断念していました。 また,旧アプリはAPIのv1を使っていたのですが,Qiitaからv1のAPIサポートが9月に终了する告があり,v2に切り替えたところ,1APIで取得できた投稿のストック数が2API(投稿取得->投稿のストック数取得)コールせねば取れず、、 层。API层作るしかねぇと思い,APIを作ることにしました。 (まだ开発中ですが,リポジトリはこちら) hirothings / qiita-pocket-API 通过在GitHub上创建一个帐户为qiita-pocket-API开发做出贡献。 github.com なぜ蒸气? uelともとSwiftは书けるけど,サーバーサイドは过去ドはFuelPHPを少し触ったのとProgateでRailsの讲座を终えた程度の初心者だったので,この际何やっても同じなら惯れた惯れた言语のSwiftでやってみようと决断。 SSSのフレームワークは,PerfectとVaporのスター数が串联抗しているのですが,VaporはToolboxというコマンドセットでHerokuへのデプロイが可能なので,Vaporにしました。(环境の构筑にお金と时间をかけたくなかった) 実装した机能 DB作成(sqlite3) 型号作成 模特の1対多のリレーション ルーティング Qiita APIにHTTPリクリスト 限价服务を超えないようにインターバルを空けてリクエスト 模特に対してクエリの発行(タグでフィルタ,期间でフィルタ) 型号をJSONエンコード herokuにデプロイ 蒸气の良いところ 可能とんどの机能がデフォルトのパッケージで実装可能 実际,上记の実装のうち,追加のパッケージが必要だったのは「6。 速率限制。 斯威夫特で书ける これは当たり前ですが,Swiftの良いところを生かしてコードが书けるようにフレームワーク自体が设计されてます。 例えばModelオブジェクトのコード 最终课程文章:模型{ var storage:存储= Storage() 静态让idType:IdentifierType = .int 让标题:字符串 让itemID:字符串 让发布时间为:日期 让profileImageURL:字符串 让网址:字符串 var stockCount:Int = […]

迅捷周:05.06〜05.12

只是想告诉你妈妈,“我很幸运能把你当成我的妈妈,因为我敢肯定,这么长时间没有人会和我在一起。” 使用Swift的iOS中的区块链编程 乌迪米 您对学习区块链技术感兴趣吗? 区块链技术是比特币的支柱…… www.udemy.com Swift 3 —从X​​IB创建自定义视图 在xib文件中,创建自定义视图通常最容易,您可以在其中可视化,布局和编辑…的外观。 medium.com SWIFT-带有XIB文件的自定义UIView 使用XIB文件定制UIView是iOS开发中非常普遍的做法。 自定义UIView类不包含XIB文件… medium.com Swift 4:将填充扩展添加到UITextField和UITextView 步骤1:IBDesignable用于自定义UITextField和UITextView medium.com Swift 3:向UITextField添加填充 在现代的移动应用程序设计中,对我们来说至关重要的是添加填充,以使字段看起来更整洁,更… medium.com 使MVC再次出色! 使用泛型,协议和扩展摆脱大型视图控制器 medium.com iOS Swift中值类型和引用类型之间的区别? 这是每种编程语言的基础之一。 我们大多数人可能已经开始使用C语言进行编程。 如果… medium.com 如何在接下来的6个月中实现您的10年计划 “您如何在未来6个月内实现10年计划?” —彼得·泰尔(Peter Thiel) medium.com