Tag: swift3

雨燕3:私有和文件私有解释

苹果已经发布了swift 3,许多开发人员都在做噩梦,因为在进行必要的更改之前,较早的代码将拒绝在Xcode8中进行构建。 这可能意味着很多晚上无法入睡,几天中有些晚工作时间,尽管其中有许多人完全放松下来。 我将在即将到来的帖子中写有关快速更新的内容,为此,我正在讨论一个较小的部分。 Swift 3带来了许多重大变化,其中之一是引入了新的Access Modifier: Fileprivate 。 Fileprivate现在是早期Swift版本中的private。 您可以很好地从名称本身猜测,在班级级别是私有的。 无论使用什么功能,使用Fileprivate定义的变量都只能在所有范围内的该类中访问。 其中as,private修饰符比Fileprivate更具限制性。 所有带有private的声明只能在词法范围(声明的地方)内访问。 例如,如果您使用Fileprivate修饰符声明了一个类变量,则可以在该源文件中的所有扩展名中使用,在private中使用private会产生错误,因为它是在类范围中声明的,而现在已在中使用。 我将使用表格视图示例进行演示。 步骤1 :创建一个新的视图控制器文件,以及两个类级别的ivars,它们都是String数组,一个带有private修饰符,另一个带有FilePrivate。 步骤2 :对该类进行扩展,使其符合UITableViewDataSource协议,并实现两个tableview数据源函数numberOfRowsInSection()和cellForRowAtIndexPath()。 步骤3 :在numberOfRowsInSection()中,首先返回fileprivate数组计数。 一切都会好起来,代码将成功编译。 现在尝试返回私有数组计数,您甚至不会在代码意义上自动完成该变量。 即使您手动编写,编译器也会给出错误。 由于因为您在类作用域中声明了私有变量,所以您不能在扩展中使用它,因为它们是不同的作用域。 根据经验,专用于变量,常量,内部结构和仅在类/结构的声明内使用的类。 如果要在整个文件中访问变量,请使用Fileprivate。 这都是第一个故事,其他新的更新博客即将推出。

如何在具有不同故事板的ViewController之间进行选择

当您想在情节提要之间划分视图时,此功能将很有用,例如,当您在团队中工作时,您的同事可能正在一个特定的情节提要上工作,而您在另一个情节提要中工作而不会合并大问题! 让我们使用Single View Application模板在xcode中创建一个新项目: 为了在视图控制器之间进行隔离 ,我们将需要一个导航控制器 ,所以让我们开始吧,从xcode的导航器端转到Main.storyboard文件,然后从画布中选择ViewController ,然后在顶部栏菜单中选择编辑器/嵌入/导航控制器,如下所示: 然后转到“ 对象库”部分,选择“ 情节提要参考控件”并将其拖动到画布上: 让我们创建另一个 情节提要板,然后转到顶部栏菜单,选择File / New / File 选择“情节提要”选项,单击“下一步”,然后为其命名为“ 另一个”: 现在,从导航部分中选择Another.storyboard ,并在画布中从Object Library部分中拖动一个新的ViewController : 让我们继续在Another.storyboard上工作,我们需要为画布中的ViewController为其Storyboard Id Identity提供一个值,我们可以随便命名它,让我们使用此值命名: AnotherViewController 到目前为止,到目前为止还不错,现在让我们回到Main.storyboard文件,然后在画布中选择ViewController并从ViewController中的Object库中拖动一个Button控件: 然后按下控制键并单击鼠标左键将鼠标悬停而不释放,然后将其释放到我们之前在画布中创建的情节提要参考控件中,这样将出现一个弹出窗口,选择“ 显示”选项: 最后,我们在Main.storyboard中需要做的最后一件事是配置Storyboard Reference,一旦单击它,右侧的检查器面板将为我们提供一些选项,例如Storyboard ,该选项设置为Another值即另一个的名称。我们使用AnotherViewController值设置的故事板文件和参考ID 表示故事板ID,我们将其提供给位于another.storyboard文件中的另一个ViewController 现在运行它,即使知道两个控制器都位于不同的故事板文件中,也可以在视图控制器之间进行导航。

使用Swift3 iOS应用程序实现自定义相机功能

要在iOS中实现相机功能,我们使用Image Picker Controller,但如果需要更改Image Picker Controller以外的样式和功能,则需要创建自定义相机。 因此,在本教程中,我们将看到一个示例,该示例在iOS中使用Swift 3创建自定义相机。 让我们看看如何: 首先,我们将根据我们的需要或要求创建用户界面,并在控制器中包含3个元素:- UIView 影像检视 UIButton UIView用于向用户显示相机,UIImageView用于将单击的图像显示为预览,最后但并非最不重要的UIButton用于拍照并显示在UIImageView中。 屏幕的用户界面截图如下: 现在,我们将转向自定义相机功能的编码部分。 创建两个元素UIView的出口作为PreviewView,用于显示摄像机,另一个是ImageView作为captureImage,以显示捕获的摄像机的预览。 UIButton用于按钮动作,因此我们将不创建UIButton的插座,而将创建名为btnTakePhoto的UIButton动作。 在此处阅读更多有关如何使用Swift3 iOS App实现自定义相机功能的信息

如何在Xcode 8.2.1中自定义文件模板

你好! 这是在Xcode中使用的Xcode文件模板,可以让您轻松使用并快速使用TableviewController,Collectionview Controller,……等模板创建新文件。 来源:https://github.com/sourleangchhean168/Xcode-Custom-Template 如何使用 转到您的Xcode的路径: Xcode 8.2.1.app/Contents/Developer/Library/Xcode/Templates/File Templates / Source 2.将所有文件夹(“ .xctemplate”)复制到上述路径 3.重新启动您的xcode(可选) 警告 您尝试使用此存储库后,我们对您的问题不承担任何责任。 只是为了学习谢谢 联系我们 电子邮件:sourleangchhean168@gmail.com Stackoverflow:酸辣豆蔻

将Xcode 7.3.1项目升级到Xcode 8.0

我想将我的Xcode 7.3.1项目升级到Xcode 8.我的项目是在Xcode 7中用swift 2.2编写的,但现在我想用swift 3.0升级到Xcode 8。 我的项目包含一些pod文件库,同时升级到Xcode 8,我面临着很多的警告和错误。 与故事板相关的警告已解决,但pod文件中的错误未解决。 Xcode告诉我把swift语法转换成最新的语法,所以我做到了。 Swift语法错误显示在pod文件中。 我正在尝试解决pod文件的swift语法错误,然后Xcode告诉我解开pod文件,我做了,但然后豆荚不工作。 有谁知道如何解决pod文件错误? 或者如何将整个Xcode 7.x项目转换为Xcode 8?

Swift 3无法识别的select器发送到实例UIButton

我得到这个错误: 由于未捕获exception“NSInvalidArgumentException”而终止应用程序,原因:' – [UITouchesEvent text]:无法识别的select程序发送到实例0x6100000e9400' 它崩溃的button: import UIKit import Firebase import FBSDKLoginKit class RegisterViewController: UIViewController, FBSDKLoginButtonDelegate, UITextFieldDelegate { override func viewDidLoad() { super.viewDidLoad() // Create Sign Up button let signUpButton: UIButton = { let button = UIButton() button.setImage(#imageLiteral(resourceName: "Go Button@1x"), for: .normal) button.addTarget(self, action: #selector(createAccountTapped), for: .touchUpInside) // when tapped on Sign In button, execute […]

如何将数组保存到UserDefaults,然后检索该数组并打印

这是我的代码。 这似乎是一个错误。 任何人都可以请帮忙。 class PopUpVC: UIViewController { var myArray1 = ["1","2","3"] var myArray2 = [String]() UserDefaults.standard.set(myArray1, forKey: "array") override func viewDidLoad() { super.viewDidLoad() self.myArray2 = (UserDefaults.standard.string(forKey: "array") as? [String])! print(self.myArray) }

如何从Json获得特定的价值?

我有Json的数据如下图所示在这我需要得到的数据,默认哪个键值对是1然后我需要得到剩余的字典数据,需要传递给用户来显示可以任何一个告诉我如何实现这个? 而我的代码如下所示 if let addressArray = jsonObj!.value(forKey: "address") as? NSArray{ for array in addressArray { if let addressDict = array as? NSDictionary{ if let Default = addressDict.value(forKey: "default"){ } } } } "address": [ { "default": 0, "number": 9123456711, "name": "Ramesh", "address": "No:11/111 ,cross street,Nungambakkam,mylapore,chennai :600088" }, { "default": 1, "number": 8123456722, "name": "Vignesh", "address": […]

如何在UICollection View单元中显示图像,同时单击swift ios中的单元格?

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! PlaceCollectionViewCell //let imageView = UIImageView() //cell.backgroundColor = UIColor(colorLiteralRed: 0.278, green: 0.694, blue: 0.537, alpha: 1.00) cell.layer.borderWidth = 0.5 cell.layer.borderColor = UIColor(colorLiteralRed: 0.278, green: 0.694, blue: 0.537, alpha: 1.00).cgColor //cell.placeLabel.tintColor = UIColor(colorLiteralRed: 0.278, green: 0.694, blue: 0.537, alpha: […]

下标成员的Facebook SDK错误

我使用Facebook SDKlogin和提取数据在我的最后,但无法解决我面临的问题相关的语法的挑战 func fetchProfile() { let parameters = ["fields": "email, first_name, last_name, picture.type(large)"] FBSDKGraphRequest(graphPath: "me", parameters: parameters).start(completionHandler: { (connection, user, requestError) -> Void in if requestError != nil { print(requestError) return } var email = user["email"] as? String let firstName = user["first_name"] as? String let lastName = user["last_name"] as? String self.nameLabel.text = "\(firstName!) \(lastName!)" var […]