Tag: swift

没有上下文类型可编码,无法解析对成员的引用

在这里,我想分享一下我的经验,即为NSManagedObject类实现Codable协议时解决此编译错误。 当我们尝试编码NSSet类型的汽车对象时,就会出现错误。 汽车对象是CoreData NSManagedObject生成的类。 解决方案:经过广泛研究,我们必须达到的解决方案是在支持Objective C对象方面,codable存在一些潜在问题。 NSSet是Objective C类型。 因此,将NSSet更改为Set可以解决编译问题并发挥作用。 学分到 :Sathiyanarayanan,印度钦奈 如有任何疑问,请随时通过pratheesh_db@hotmail.com与我联系。

在Swift项目中设置C ++库依赖项

如果我们知道窍门的话,这并不棘手。 T L; DR Swift无法直接读取C ++代码,但是如果我们使用Objective C ++将C ++库包装到一个Objective-C模块中,它将可以解决问题。 第一步:创建一个Objective-C项目 Xcode->新建->项目->可可触摸框架->语言:Objective-C->下一步。 我将项目命名为CppDependencyTutorial 。 第二步:设置项目依赖项 我有一个名为ExampleC ++ Library的静态C框架。 将ExampleC ++ Library.xcodeproj拖到CppDependencyTutorial项目中。 选择目标CppDependencyTutorial- > general- >链接的框架和库-> Add libExampleC ++ Library.a 。 第三步:创建一个Objective-C包装器 选择目标CppDependencyTutorial- > File-> New-> iOS-> Cocoa Touch class-> Next。 我将类CppDependencyWrapper命名为NSObject的子类,语言为:Objective-C。 ❗ 重要步骤 ❗:重命名 CppDependencyWrapper.m到CppDependencyWrapper.mm 。 它成为同时支持C ++和Objective C的Objective-C ++文件。 在CppDependencyWrapper.mm文件中,导入C标头路径。 第五步:在Swift项目中使用Objective-C模块 选择CppDependencyTutorial项目-> 常规 ->单击“ +”以添加新的快速测试目标-> […]

在您的ViewController中使用多个tableView或CollectionView

曾几何时,我为一个项目编写代码,该项目的第一页中有很多表和集合视图。 我记得我曾经用“容器视图”解决了这个问题,但这是一个错误的决定……。 另一个好用的选择是“滚动视图” ,它很容易实现,但操作起来又费时。 由于委托是一个协议,我认为有一个好的方法…… 协议和代表示例 协议和委托示例–在一个ViewController中使用多委托 github.com 首先创建一个NSObject类,以减少自定义,然后添加要用作超类的所有委托方法。 将Model属性添加到您的类中以进行设置并获取所有要显示的信息。 在我的情况下,数据模型名称为ItemManager。 创建一个dataModel类,并将其分配给您的DataProvider的Model。 自定义所有方法并设置DataModel之后,是时候将类设置为UITableView或UICollectionView的协议了。 使用Techniq的好处还在于您可以在应用程序中使用单元测试,我真的建议您阅读使用Swift 4进行测试驱动的iOS开发–第三版作者:Dominik Hauser博士 使用Swift 4进行测试驱动的iOS开发–第三版– PDF电子书| 现在只要$ 5 使用测试驱动的方法通过Swift 4和Xcode 9开发功能强大的iOS应用 www.packtpub.com

UIWindow공부

UIWindow的정객체로만어렴풋이있었다。 查看适用于iOS的View编程指南。 UIWindow – UIKit | Apple开发人员文档 Windows与您的视图控制器配合使用,以处理事件并执行许多其他基本任务,这些任务对您来说…… developer.apple.com 视窗 描述可视界面元素的创建和管理。 developer.apple.com UIWindow正在下载。 。다。 。케케케한。。한한한한한。 。리엔테이션하기협력한다협력한다。 窗口컨테이너된다。 스크린에고다다다이다。 하나의주주주경우밑에서밑에서밑에서View View View View View View View View View View View View View View View View View View View View View View View View View View View View View View View View View용한용한용한용한용한용한용한용한용한용한용한용한용한용한용한용한용한용한용한。 Xcode应用商店AppDelegate窗口窗口窗口없다없다。 다음은만들거나로만들어지는이다。 스메인리보쓰지메인。한다。 운스플레이를지원하는새로운Window운보여줄있다。 […]

iOS。 开始了

开始 建立新专案 音频文件 音频文件 音频文件 音频文件

iOS- Storyboard可以方便地访问整个项目。

本文将帮助iOS开发人员轻松浏览一个文件中项目中存在的故事板。 将您的项目中存在的所有Storyboard定义为以下附件图像中所示的枚举。 下面定义的格式将帮助您访问方法,无论是快速项目还是Objective-C组合项目。 定义UIViewController Extension类实用程序方法,您可以在整个项目中重用这些方法,请参见下面的图像 GitHub链接:https://github.com/yugandh/StoryBoardsAccess 结论 通过这种方法,我们可以在项目中实现干净的情节提要板架构实施。

Swift中的Atbash密码

Atbash密码是许多经典密码之一,并且可能是最简单的密码之一。 它是一个单字母替代密码,最初用于加密希伯来字母,但可以与任何已知的书写系统一起使用(维基百科) Atbash密码的工作原理是采用字母(或代表书写系统的任何字母)并将其映射为相反的字母。 以拉丁字母为例: 字母:ABCDEFGHIJKLMNOPQRSTU VWXYZ 反向:ZYXWVUTSRQPONMLKJIHGF EDCBA 使用此密码,纯文本“ Hello World”将被加密为“ Svool Dliow”。 如您所见,这不是一种非常安全的加密,因为它缺少密钥。 在Xcode Playgrounds上使用此密码,我设法为其提供了两种不同的实现。 为了简单起见,我将纯文本转换为所有小写字母,并删除了空白。 第一种实现利用字典将每个字母映射到其反向值。 当遍历纯文本的字符以获取相反的值时,它用作查找表。 func atbashCipher(_ plainText:String)->字符串{ 让字母= Array(“ abcdefghijklmnopqrstuvwxyz”) let cipher = zip(alphabet,alphabet.reversed())。reduce([String:String]()){(dict,arg1)-> [String:String]在 let(键,值)= arg1 var dict = dict dict [String(key)] =字符串(值) 返回字典 } 让formattedPlainText = plainText.lowercased() .replacingOccurrences(of:“”,with:“”) 让cipherText = Array(formattedPlainText).compactMap {String($ 0)} .map {(str)->字符串输入 返回密码[str] ” } […]

如何将图像资源添加到您的项目。

添加图像后,您将看到1x,2x,3x的视图。 使用Interface Builder时,所有坐标均基于点。 它是开发人员的内部系统。 这与物理像素无关 现在有一个复杂的设备系统。 最初,像素等于点,但是自从引入视网膜屏幕以来,一切都发生了变化。 因此需要1倍,2倍和3倍才能与不同的设备一起使用。 如果您的设计中有一个小图标,其尺寸为20×20,则2x的大小为40×40,3x的大小为60×60。 现在,您可以不使用1倍的图像大小进行工作; 它已经过时了。 要生成图像集,建议您使用此工具。 确保选择3x,然后取消选中Android。 生成的集合具有后缀为@ 2x和@ 3x的文件。 它是iOS的注释。 当您将所有三个文件添加到项目中时,请尝试将图像添加到UIImage视图中。 您只会看到一个没有后缀的选项。 您还可以在此处生成一个应用程序图标。 它将显示在iPhone桌面上。 您可以使用相同的工具。 确保仅打开iPhone开关。 您只需将名称为AppIcon.appiconset的文件夹拖到项目中,即可将图标添加到项目中。 确保在添加新图标之前删除旧图标集。 在模拟器中查看新图标。 应用程序启动后,按Command + Shift + H可以看到主屏幕。

Xcode中的正则表达式搜索

在Xcode中执行搜索时,我们可能忽略的一件事是正则表达式。 我们可以在“ Find navigator或document search使用它 而且,我们也可以在“ Find和Replace使用它 我在搜索可能导致编译时间缓慢的内容时特别有用https://medium.com/swift-programming/swift-build-time-optimizations-part-2-37b0a7514cbe#.3bk18xlw9 您可以使用https://regex101.com/帮助您检查表情 查找字典类型推断 你可以找到这些 用let .* = \[ 查找零合并运算符 你可以找到这些 与.* \?\? .* .* \?\? .* 阅读更多 http://ericasadun.com/2015/07/27/xcode-searching-with-regex/ http://roadfiresoftware.com/2013/12/replacing-regular-expressions-in-an-xcode-project/

通过Swift中的深层链接运行其他应用的Siri快捷方式

快捷方式结束后返回您的应用 运行快捷方式很棒,但是您可能已经注意到,深链接必须打开“快捷方式”应用才能正常工作。 快捷方式结束后,我们如何返回到我们的应用程序? 对我们来说幸运的是,“快捷方式”应用程序支持x-callback-url标准,这是您通过URL将数据发送到其他应用程序并以其他URL形式取回某些东西的一种标准化方法。 看起来像这样: shortcuts://x-callback-url/run-shortcut?name=[name]&x-success=[url] 当[name]快捷方式成功执行时,“快捷方式”应用程序将自动尝试打开传递给x-success参数的URL。 这可以是任何url,我们可以通过注册自己的URL方案使用它返回到我们的应用程序。 假设我们的应用程序正在侦听myapp:// URL方案,则可以通过运行以下myapp://使Shortcuts应用程序路由回到我们的应用程序: let shortcut = “shortcuts://x-callback-url/run-shortcut?name=Take%20Picture&x-success=myapp://” let url = URL(string: shortcut)! UIApplication.shared.open(shortcut, options: [:], completionHandler: nil) 除了x-success , x-cancel和x-error还可分别用于处理中断和错误。 其他深层链接 导入快捷方式 shortcuts://import-shortcut?url=[url]&name=[name] 对于此特定的快捷方式, url是.shortcut文件的URL,而name是要导入的快捷方式的名称。 您还可以将&silent=true传递到此深层链接,以防止快捷方式应用程序打开导入的快捷方式。 此深层链接还支持x-callback-url 。 打开(不运行)特定的快捷方式 shortcuts://open-shortcut?name=[name] 打开快捷方式应用 shortcuts:// 打开创建快捷方式屏幕 shortcuts://create-shortcut 打开快捷方式库 shortcuts://gallery 搜索快捷方式库 shortcuts://gallery/search?query=[query] 结论 由于您无法检索用户快捷方式列表,因此常规应用程序中的这些深层链接可能没有多少用处,但是它们对于诸如AirPods相机技巧之类的个人自动化项目非常有用。 您打算做什么? 在我的Twitter上关注我-@rockthebruno,让我知道您想分享的任何建议和更正。 参考书目和优秀读物 x-callback-url Apple Docs:快捷方式URL方案