核心数据概述

核心数据是Apple在macOS和iOS操作系统中提供的对象图和持久性框架。 如果您正在阅读本文,那么我认为您是Core Data的新手,您可能听说过它,并且对它的确切含义以及在何种情况下可以使用它感到好奇。本教程中的代码。 相反,我想重点介绍Core Data中使用的术语。 如果此描述适合您,请坐下。 在不了解核心数据基础知识的情况下,很难理解核心数据的来龙去脉。 什么是核心数据 核心数据通常被视为数据库。 让我为您清除此问题“不是”。 它是MVC(模型视图控制器)中的“ M”。 它是用于管理对象图并持久化对象图的框架。CoreData不是关系数据库。 它实际上是一个框架,允许开发人员以面向对象的方式从数据库存储(或检索)数据。 借助Core Data,您甚至可以在不知道任何SQL的情况下轻松地将应用程序中的对象映射到数据库中的表记录。 何时使用核心数据 该框架非常适合各种应用程序,但并非每个应用程序都应使用Core Data。 需要轻量级模型层的应用程序不应使用Core Data。 如果您想要一个管理应用程序模型层的解决方案,Core Data是一个绝佳的选择。 核心数据VS SQLite Core Data和SQLite之间最重要的区别是SQLite是数据库,而Core Data不是。 这是最重要的区别,因为没有什么可比较的。 Core Data和SQLite是解决不同问题的解决方案。CoreData可以使用SQLite作为其持久存储,但框架本身不是数据库。 核心数据栈 核心数据堆栈是框架对象的集合。 核心数据堆栈是对象和外部数据存储之间的中介。 核心数据堆栈处理与外部数据存储的所有交互。 因此,程序员可以只专注于业务逻辑。 堆栈由3个主要对象组成。 1.管理对象模型 2.持久性存储协调员 3.管理对象上下文 1.管理对象模型 托管对象模型是NSManagedObjectModel类的实例,它加载数据模型并将其公开给Core Data堆栈。 设置应用程序的核心数据堆栈后,托管对象模型将从应用程序捆绑包中加载数据模型。 创建堆栈后, NSManagedObject加载到Stack中。 2.持久性存储协调员 持久存储协调器位于核心数据堆栈的中间。 持久性存储协调器是堆栈的核心。 它用于释放模型中存在的实体的实例。 它创建实体的新实例,并从持久性存储中检索现有实例。 NSManagedObject定义数据, NSPersistentStoreCoordinator从持久性存储中的数据中释放对象,并将该数据对象传递给NSManagedObjectContext NSPersistentStoreCoordinator还检查数据是否处于与NSManagedObjectModel.定义匹配的状态NSManagedObjectModel. 它保留对托管对象模型和托管对象上下文的引用。 […]

做梦吧! 为什么我决定测试Nightly应用程序,它真的有效吗?

有个故事说,缝纫机的发明者埃里亚斯·豪(Elias Howe)在从事发明工作时陷入了僵局。 他不知道如何放置针头才能正确缝制。 一天晚上,他做了一个梦……实际上是一场噩梦。 战士一直在追赶他,他们显然想抓捕并杀死他。 他设法注意到战士携带的矛被刺穿在头部附近。 埃里亚斯·豪(Elias Howe)醒来后,他立即知道如何解决问题! 令人着迷的是某些梦想如何激发或带回美好的回忆。 但是还有其他梦想……让我们说不那么愉快。 从那以后我就一直做噩梦。 例如,一个反复发生的梦,我的所有牙齿掉下来(根据在线梦书,这意味着家庭死亡。这是美好的,不是吗?),战争和倒塌的建筑物,被某种果冻怪物和活着的人吞噬。最糟糕的是:巨大的扭曲(不,不是游戏。) 这些只是我梦dream以求的遭遇的几个例子,所以当我得知DreamJay宣布Nightly应用程序Beta测试时,我立即注册了。 梦想背后的科学。 要了解Nightly app的工作原理,有必要了解噩梦的医学性质。 根据世界卫生组织的说法,“梦night症的特征是反复发生令人恐惧的梦境,导致梦with的觉醒与详细的回忆。” * 2–8%的成年人患有噩梦。 它对睡眠质量有重要影响。 每天晚上,当我做噩梦时,我都会在半夜醒来,无法入睡。 显然我早上没有感到好休息。 每晚应用程序如何工作? “我们的技术基于研究表明,有意义的外部刺激可以纳入梦中内容。 在做恶梦的情况下,使用正刺激可以改变梦境的内容并改善患者的睡眠质量。 (…)您要做的就是选择我们精心设计的视频主题之一。 在睡眠前播放具有正面音调刺激的视频,然后在晚上,该应用在睡眠的特定时刻播放特定的声音,以使您的大脑不会产生噩梦。” * *来自Nightly博客的语录。 亲爱的日记… 使用该应用程序非常简单。 您选择一个视频主题(Dream Scape),观看一小段视频并入睡,听声音提示。 您将手机放在床上,到了晚上,它会在适当的睡眠阶段为您播放类似的声音提示,以改善您的梦想。 有很多Dream Scapes可供选择。 我决定尝试所有方法,并检查Nightly是否真的有效。 第一天。雨林 我在每晚的第一个夜晚选择了这个,因为它可以帮助我放松一下(并且因为我喜欢雨林溪流的照片)。 唯一的问题是我习惯于完全沉默地入睡。 我不算吵闹的邻居。 多年后,我学会了忽略它们。 起初我很难入睡,这花了我很长时间(或者那是我的印象)。 不幸的是,我不记得自己的梦想。 该应用程序比原计划提前了30分钟将我叫醒,但是我感到休息得令人惊讶。 第二天 这是一个有争议的决定,我不喜欢下雨。 在秋天的几个月里,我感到沮丧。 尽管如此,我还是决定尝试一下它,因为描述向我保证,它将帮助我集中精力。 我不得不承认,飞溅的雨滴的视频非常令人放松。 由于某种原因,我睡不好觉,尽管我知道其中有无穷无尽的清单。 后来我了解到耐心是关键,我必须使用该应用程序至少5天才能体验到真实的结果。 第三天海滩 谁不想睡着看着棕榈树,听着平静的海浪? 我必须说这很棒,即使您的手机屏幕上有棕榈树。 […]

旋转球-Nanovation的上瘾点击或保持游戏— GameOver Studio

如果您只是想放松一下,躺在沙发上而不打扰自己的头,可以尝试一下Rotaball 。 紧接着是DEADCOOL的Nanovation ,为您带来了另一款令人上瘾的游戏,您必须点击或按住游戏屏幕才能得分。 该游戏最令人耳目一新的事实是,您在这里控制环境,而不是玩家!! 令人印象深刻,对不对? 控制非常容易。 当球向下移动时,您只需要轻按或按住即可围绕球旋转障碍物。 您的分数取决于您可以避免多少障碍。 在这里,您可以了解反射的速度。 如果触摸任何物体,就会死! 让我们来看看,您能走多远! 特征: 大量的人物可以解锁 •24个挑战等级 •无尽模式 •独特的游戏玩法 •最小的图形和音乐 你喜欢读的书吗? 您可以通过以下链接在App Store上免费 下载并尝试这款出色的游戏-

为Apple TV开发

在上面的示例中,带有黄色突出显示的单元格清楚地指示了选定的产品。 为了获得这种用户体验,开发人员需要系统通知他们焦点更新,这就是焦点引擎起作用的地方。 焦点引擎 最初的重点 启动应用程序或显示新屏幕时,用户需要查看最初聚焦于哪个元素。 默认情况下,焦点引擎会选择屏幕上的第一个可聚焦元素。 在此示例中,聚焦引擎明智地聚焦于集合的第一个元素。 开发人员还可以选择确定哪个元素从重点开始。 例如,如果在显示屏幕时应将“浏览所有产品”按钮对准焦点,则Apple提供了属性preferredFocusEnvironments ,可以重写该属性以返回该按钮。 preferredFocusEnvironments是UIFocusEnvironment协议的一部分,控制视觉表示的对象符合该协议。 这意味着焦点引擎了解如何向充当焦点环境的组件提供更新,例如UIView或UIViewController 。 另外,由于视觉表示由较小的视觉表示组成,因此进一步暗示焦点环境可以由其他焦点环境组成,例如视图及其子视图,或者视图控制器及其子视图控制器。 聆听焦点更新 在前面的示例中,聚焦的单元格突出显示为黄色。 这可以通过以下方式实现: 这也是UIFocusEnvironment协议的一部分。 只要焦点引擎将焦点放在焦点环境上,它就会将didUpdateFocus消息发送到焦点环境。 此调用将在焦点环境链中传播,直到最终到达更新其视觉表示以表示焦点状态的元素为止。 在第一个产品专注于发布的示例中,我们的自定义单元收到了didUpdateFocus调用,检查了上下文以确保它是聚焦环境,并将其背景色更新为黄色。 didUpdateFocus还用于更新未聚焦元素的视觉表示。 在我们的示例中,当焦点从一种产品转移到另一种产品时,先前选择的产品的单元格将其背景色设置为浅灰色。 调试焦点更新 在开发过程中保持对焦点引擎行为的清晰了解非常重要。 Apple在Xcode中包含一个焦点检查器,使开发人员可以可视化焦点引擎周围的事件。 上图包括以下内容: 先前关注的项目- 带有实线边框的红色框 滑动方向- 带有虚线边框的浅红色框(在先前聚焦的项目内) 下一个重点元素- 带圆形红色边框的紫色框 可以通过在didUpdateFocus覆盖中设置断点,在应用程序中触发焦点更新以及检查上下文参数来访问可视化。 重点指南 由于聚焦引擎只能以严格的垂直或水平方式找到可聚焦的元素,因此在某些情况下,元素可能无法聚焦,因为它不在滑动方向指示的路径之内。 重点指南就是解决方案。 它们本质上用于通过利用其preferredFocusEnvironments属性来重定向焦点更新。 在下面的示例中,集合视图自动将焦点集中在其集合中与焦点单元相邻的单元上。 但是,除非焦点指南拦截了焦点更新,否则集合视图外部不在焦点单元路径中的元素将无法被焦点。 我们放置了一个焦点指南,该指南从“浏览所有产品”按钮的右边缘延伸到集合视图的右边缘。 由于有了这个聚焦指南,按钮才可以从集合中的最后一项聚焦。 焦点指南是不可见的,但仍可以使用焦点检查器看到。 当用户从最后一项向下滑动时,聚焦指南(蓝色框)将获得聚焦。 因为焦点指南的preferredFocusEnvironments设置为“浏览所有产品”按钮,所以它可以按预期重定向焦点。 以下是焦点指南设置的代码: 重要要点 在构建Apple TV应用程序时,值得花一些时间来全面了解焦点引擎的工作方式以及最终用户将如何浏览该应用程序。 让自己穿上鞋子,想象一下如何与应用程序交互。 此外,请确保您的应用是一致的,并且清楚其如何识别重点内容。 这样,在整个应用程序中,用户体验将变得流畅且连贯。

介绍WRLD挑战赛的获胜者

WRLD最近为开发人员使用任何WRLD SDK创建最有用的应用程序或身临其境的体验带来了全球性挑战。 比赛于10月1日开始,一直持续到12月31日。 WRLD从VR驱动的旅行应用程序到身临其境的健身游戏,再到导航应用程序再到飞行游戏,都对这一挑战做出了很好的回应。 提交的创意与WRLD SDK结合在一起,是无止境的。 根据WRLD平台功能的创造力,相关性,质量和使用情况对获奖者进行评判。 认识获奖者: 有用的应用类别的获胜者: YouAnchor YouAnchor是Yosun Chang推出的第一个iPhone X应用程序,可让您成为自己的现实世界化身中的化身锚。 用户可以用自己的脸庞伪造自己的个性化头像,并在自己的作品中加注星标,以欣赏风景如画的美景,随时随地共享和直播。 该应用程序的目标用户是想个性化自己的化身并通过WRLD 3D地图进行实时流播的所有人。 应用程序的质量以及概念的独特性是决定其成功的因素。 该应用程序目前可以在iPhone X上查看,但不久之后还将对其他手机开放。 您可以在Github存储库中查看YouAnchor。 游戏/沉浸式体验类别的获胜者:天使世界 该游戏由肯尼·汉森(Kenny Hansen)创建,专注于解决VR内容的三个主要问题:不中断沉浸感就很难移动,通常是一个狭窄/封闭的环境,而且很孤独。 Angel World旨在提供一种开放,自由,富有表现力和深度的开放世界体验,使您可以在任何地方飞行以与世界各地的玩家交流。 在WRLD的3D地图中飞行的感觉同时空灵而令人上瘾。 该应用程序主要用于房间规模的VR用户,肯尼(Kenny)打算在夏天推出更完美的体验。 最后,非常感谢所有参与#WRLDChallenge的开发人员和设计师。 我们希望将来也能举办更多此类比赛。 敬请关注!

ios模拟器构建

Pod安装依赖项 吊舱安装 通过以下命令查找iphonesimulator版本 xcodebuild -showsdks 为模拟器构建 xcodebuild -sdk iphonesimulator [版本] -workspace [projectName] .xcworkspace -scheme [projectName] -configuration [buildType] 注意: -iphonesimulator的[version]从xcodebuild -showsdks获取 – [项目名称] xcworkspace的名称 – [buildType]是Debug或Release 例: xcodebuild -sdk iphonesimulator11.4-配置发布-workspace AnoMous.xcworkspace -scheme AnoMous 查找模拟器版本 〜/ Library / Developer / Xcode / DerivedData / [projectName] – [buildhash] / Build / Products / [buildType] -iphonesimulator / [projectName] .app […]

必须为构建出色的IOS应用程序而避免的错误

我们所有人都知道,iOS操作系统凭借其自发且易于使用的操作以及它所促进的众多应用程序,已经改变了世界。 现在,您可以找到几乎所有内容的应用程序! 事实上,有超过八亿个小工具在运行iOS,在不久的将来可能有十亿个小工具由iOS驱动,它拥有巨大的市场份额,而进入这一市场完全是合乎逻辑的,失败。 如今,随着Swift作为核心编程语言的出现, 针对iOS的开发变得更加密集和时尚。 尽管Objective C用户仍处在步调之中,但许多开发人员仍在使用它,而不是转向高级编程语言(即Swift)。 专业人士提到,但是事实上,将优秀的应用程序开发人员与专业的应用程序开发人员区分开来只是一点点差异。 坚持这一现实,在此博客文章中,我们讨论了人们在应用程序开发过程中通常做出的一些最常见的错误。 俯瞰Beta测试仪 认为您的应用程序是市场上最好的应用程序,从长远来看实际上可能会让您感到遗憾。 根据iOS应用程序开发语言的专家的观点,当涉及到观众时,他们是让您在App Store中阐明应用程序立场的完美人选,因此,考虑选择Beta是正确的测试人员。 另外,它们是我们目标观众的当务之急,而不仅仅是随机智能手机用户的大部分,因此,它们对于构建蓬勃发展的应用程序的企业至关重要。 说服用户通过社交媒体登录 我们知道,这是当今营销人员获取客户最著名的方法之一,但是在明智地评估选择方案的同时,许多客户并不喜欢这种替代方法。 但是,拥有社交媒体登录名对于您的应用程序至关重要,但是人们一再讨厌它,并寻求其他选择来登录。此外,理想的方法是拥有社交媒体选项和标准注册选项通过电子邮件为用户提供方便。 错误地使用UITableViews 与iOS应用开发公司一致 , UITableViews用于在iOS小工具上显示表格界面。 如果可能的话,最好重新处理UI中存在的对象以提高性能。 结果,单元回收是程序员在每个开发阶段中最成功的方法之一。 但是,对于UITableViews的单元格属性,在描述每个属性时都需要格外小心,因为一旦它开始变得混乱,它就会变得混乱。 滚动用户界面时,这可能会给客户带来震撼的体验。 下面,我们展示Mobulous简介视频 :

将应用发布到App Store

创建签名身份 创建签名身份是关于生成公钥-私钥对并使用生成的公钥来创建证书(Apple是证书颁发机构)。 只需单击XCode !!,即可生成密钥对并创建证书。 要创建签名身份, 选择“ Xcode”>“首选项”。 点击窗口顶部的帐户。 在左窗格中选择Apple ID,然后选择要查看的团队,然后在右窗格中单击“查看详细信息”。 将出现一个对话框,在“签名身份”下,您将看到“ iOS开发”和“ iOS发行”标签的“创建”按钮。 单击它们将代表您生成公钥-私钥,并生成证书。 完成上述步骤后,如果您登录https://developer.apple.com/account,您将看到为“ iOS开发” /“ iOS发行版”生成的证书 创建配置文件 创建配置文件是关于将generetd证书(请参见上面的步骤)与您的应用程序详细信息相关联。 Sigin进入https://developer.apple.com/account 点击“证书,ID和配置文件” 点击“配置文件”>“全部” 单击“ +”以创建配置文件。 在“开发” /“发行”下选择一个选项,选择应用程序ID,然后选择您的证书。 这将创建一个配置文件。 在构建机器中安装配置文件 我们需要在将创建应用档案的机器上安装生成的授权配置文件(请参阅以上步骤)(生成的档案将上传到应用商店以获取批准) 关闭任何XCode对话框 选择“ Xcode”>“首选项”。 点击窗口顶部的帐户。 在左窗格中选择Apple ID,然后选择要查看的团队,然后在右窗格中单击“查看详细信息”。 将出现一个对话框,在“ Provisioning profile”下,您将再次看到“ Download”按钮,即已创建的provision profile。 单击“下载”按钮以自动在XCode中下载并安装配置文件 建立档案 现在,我们准备生成一个应用档案。 选择“通用iOS设备”作为构建目标, 2.产品>菜单中的存档 3.成功存档后,它将打开一个对话框,左侧窗格中包含应用程序列表,中间窗格中包含常规存档列表。 4.现在选择一个最近生成的存档,然后单击“导出”按钮, 5.从后续屏幕中选择合适的选项 将档案上传到iTunes Connect帐户 尽管存档屏幕上有一个“上传到App Store”选项,但在这里我们将看到如何将存档明确上传到iTunes帐户。 打开“ Xcode”>“打开Dveleoper工具”>“ […]

Kos中的iOS

我应该检查一下我在所有当地时间拿到的纸条,以黑白相间的形式预订机票。 取而代之的是,我自然而然地屈服于技术的变幻莫测,并且将日历中的时间视为我应该乘飞机的时间。 在大多数情况下,这是可以理解的事情。 但是,在将时区变化的复杂性加到公式中时,要么再次检查那张纸,要么更好地配置我的电话设置,可能会阻止我在周日下午被卡在Kos上,而需要首先在办公室里第二天早上的事情。 在iOS中,日期和时间设置可以切换为自动更新,也可以保留为手动设置任何更改。 由于手动时间设置不正确,几周前几乎错过了通勤火车,所以我切换到自动日期和时间设置。 这意味着当我处于其他时区并下次在线时,我的设备将更新为当地时间。 一切都很好,几乎所有您想要从智能设备获得的东西。 我没有考虑的是,日历事件也会更改其计时,以反映设备处于不同的时区。 当我回顾过去的一周时,我注意到在伦敦发生的日历事件现在都准备好在几个小时后开始,并且在括号内的原始时间是BST(英国夏令时)。 我从科斯岛飞往雅典的航班没有附加BST指示器,但是在为时已晚之后我才意识到。 在希腊度假酒店休息了几天之后,参加了一次很棒的会议,我让自己放松了一下。 接下来,该回家了。 由于某种原因,在退房后等待出租车时,我有些a异的感觉是航班起飞时间可能与我期望的时间有所不同。 检查了纸上的飞行时间。 我很早就错过了第一次飞行,而且也错过了第二次飞行! 这样做的唯一目的就是去机场,并寻找任何可行的方式在同一天返回伦敦-最便宜的方式,最早的到达时间,最小的风险。 总而言之,一个很高的要求。 称为原始航空公司爱琴海。 419.15欧元,直到第二天早上11:15我才去希思罗机场。 托马斯·库克(Thomas Cook),Easyjet和Ryanair柜台断断续续地打开和关闭,但是经过所有的等待,我仍然无法在预算有限的情况下得到一些值得尊敬的东西。 绝对也不想为我的错误付出200欧元以上的代价。 移动的力量,移动的力量。 在尝试通过在线预订获得较便宜版本的Ryanair选件失败后,我启动了Kayak应用。 我说,我在科斯,今晚需要去伦敦。 现阶段伦敦任何地方都可以。 到我那里。 hir,wh,wh……’39英镑起的航班会让您与瑞安航空同时入住吗? 当然可以-更好。 可以利用多个远程预订系统的便携式设备的功能确实是一件大事。 还要感谢天堂,但也提供免费的机场无线网络。 我可以不用在科斯(Kos)机场多花12个小时,而不必再购买一张额外的机票就可以办得到,但是我想必须要有一个结果,以便有时能完全上一堂课。 另一个缺点是必须在目的地机场睡觉,然后直接去办公室。 不过,至少我将能够按时上班。 下次,我将在与航班相关的日历事件上启用“时区”设置。 最好确保也检查当地时间的纸! 当物理击败数字时…

将.dae模型导入SceneKit

我们最近一直在开发一款相对知名的“不稳定方块塔”游戏的AR版本,我们决定将其命名为Toppler。 我们采取的第一步就是使用Blender设计木块,然后直接在SceneKit中使用它们。 我将详细介绍将3D模型导出为.dae (数字资产交换)文件的过程以及如何将其与SceneKit一起使用。 您可能倾向于将其视为一个简单的步骤,但是需要注意一些事项,并且如果您以前没有做过此主题,那么缺少有关该主题的文档就尤其具有挑战性。 1.导出.dae文件 我使用Blender来制作木制积木(我将跳过积木创建步骤,这可能是以后的主题)。 您将在Blender中采取的最后一步是导出您的创作。 经典菜单,只需点击文件>导出> Collada(.dae)。 您将看到一个带有多个选项的导出窗口。 我们将感兴趣的选项是Selection Only 。 取消选中该复选框将导出场景中的所有内容(例如:灯光,照相机等)。 在这里,我们只希望将木块导出,因此我们将确保之前已选择它,然后将其选中。 选择一个适当的路径,然后单击右上角的“ 导出COLLADA”按钮。 导出后,您将在其纹理旁边找到导出的DAE文件(如果有的话)。 您甚至可以通过QuickLook获得不错的预览。 2. .dae文件 .dae文件格式(或COLLADA文件)已由“ 协作设计活动”定义。 就像定义3D对象各种特征的XML文件一样简单。 您将在文件中找到各种库,这些库将用于描述场景。 例如,我们将找到library_images来引用我们的纹理, 引用了我们的纹理和效果的library_geometries ,声明了可用几何形状的library_visual_scenes ,以及保存我们的场景元素并引用所需材质和几何形状的library_visual_scenes部分。 这里没有其他小节。 随时使用您喜欢的文本编辑器打开.dae文件,以亲自检查一下。 3.导入Xcode 使用Blender建模3D对象时要了解的一件事是与Xcode使用不同的坐标系: 在Xcode中,Y轴描述高度,而Blender中的Y轴描述深度(并且反向观察适用于Z轴)。 幸运的是,Xcode知道如何处理坐标系之间的这种差异。 如果查看Xcode中的scnassets资源文件夹,您会注意到“ 始终使用Y轴 ”选项。 意思是 : Xcode将强制执行自己的坐标系,并将转换任何使用不同坐标系的对象。 现在,只需将.dae文件及其纹理拖放到.scnassets文件夹中即可。 Xcode将自动使用适当的轴设置对其进行转换,您将能够使用Xcode Scene Editor打开它并预览3D对象。 如果最终将纹理.png文件移动到其他位置,请确保使用“材质检查器”将其重新分配给所需的材质。 4.转换为.scn 如果要使用场景编辑器(或任何特定于SceneKit的设置)更改3D对象的物理行为,则需要将模型转换为.scn文件。 在Xcode中预览模型时,请点击编辑器菜单,然后点击转换为SceneKit场景文件格式 。 然后你走了! 您最终将获得一个.scn文件,准备在SceneKit中完全使用它。 现在,您可以将其拖放到另一个场景中,或者可以通过代码将其导入并将其根节点添加到父SCNNode 。 […]