GVKun编程网logo

ios – 在swift 2中调用和打印对象内部的对象(swift 打印对象地址)

2

关于ios–在swift2中调用和打印对象内部的对象和swift打印对象地址的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于iOS18发布啦!iOS18好吗?iOS18值得更新吗?iOS1

关于ios – 在swift 2中调用和打印对象内部的对象swift 打印对象地址的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版、ios – NSDate()VS NSDate.date()在Swift、ios – 在Swift 1.2中将自身作为参数传递给init方法、ios – 在Swift 2.0中以横向模式使用UIImagePickerController等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

ios – 在swift 2中调用和打印对象内部的对象(swift 打印对象地址)

ios – 在swift 2中调用和打印对象内部的对象(swift 打印对象地址)

我有2个类,我在AnimalClass中有cat对象,我正在解析jSON,我想从jSON初始化猫的名字

class AnimalClass: NSObject {

    var cats = [catClass]()
    ..... 
}

class catClass: NSObject {

var name : String = ""

init(data : NSDictionary)
{
    if let add = data["name"] as? String
    {
        self.name = add
    }

在这里,我试图在ViewController.swift中初始化它

var animals = [AnimalClass]()
for(var i = 0; i < data_array.count; i++)
{
    if let add = data_array[i] as? NSDictionary
    {
      self.animals.append(AnimalClass(data: add)) // this works
      self.animals.cats.append(AnimalClass(data: add)) // this doesn't work
    }
}

我的问题是这行self.animals.cats.append(AnimalClass(data:add))如何追加到AnimalClass中的对象.

解决方法

您无法将AnimalClass附加到cats,因为cats是一组catClass对象.你声明它是这样的:

var cats = [catClass]()

这就是为什么下面的代码不起作用的原因.

self.animals.cats.append(AnimalClass(data: add))

所以你应该把它改成:

self.animals.cats.append(catClass(data: add))

此外,Swift中的类名应以大写字母开头,我建议您将catClass重命名为Cat(同时删除Class后缀)

iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

ios 18 横空出世,带来了一系列激动人心的新功能。您是否好奇 ios 18 的亮点,它是否值得升级?php小编西瓜带来 ios 18 的全面解读,详细介绍了它的新特性、改进和已解决的错误。如果您正在考虑升级到 ios 18,请继续阅读以了解它的优缺点,并决定它是否适合您的设备和需求。

iOS 18 beta版终于发布啦!iOS 18此次更新是否与预期一样呢? iOS 18更新了哪些内容呢?是否真的值得果粉用户升级呢?

iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

iOS 18的更新内容涵盖了多个方面,旨在提升用户体验和个性化设置。以下是iOS 18的更新内容概览:

  • 定制主屏幕:

    • 用户可以自由移动应用程序,按照个人喜好调整主屏幕布局。

    • 图标支持深色模式,用户可以为图标着色,打造独特的外观。

    • 应用程序可以随意放置,深色模式APP有更深度的适配,且有色系可选,整体可调节成一种色系。

  • 优化控制中心:

    • 控制中心进行了重新设计,新增了多款快捷组件,用户可以根据需要选择和排列。

    • 控件页面支持多页布局,用户可滑动访问控制中心的其它页面。

    • 控制中心界面设计已扩展为多页布局,允许用户将不常访问的功能移动到次级页面。

  • 隐私与安全:

    • iOS 18支持给APP上锁,支持面容识别,同时也能隐藏APP,以加强用户的隐私权限。

    • 用户可以专门控制第三方App可以访问哪些通讯录,进一步保障数据安全。

  • 信息应用更新:

    • 发送的字体样式和表情有更多自定义选项。

    • 支持稍后发送功能。

    • 在无网情况下,iPhone 14及后续机型支持卫星直发。

  • 其他内置应用更新:

    • 邮箱应用进行了更新,分类和摘要功能提高了效率。

    • 钱包应用支持两个手机一碰即可相互转账。

    • 地图应用带来了新的地形图。

    • 相册应用引入了智能功能,查找照片和照片分类更加精准。

    附上iOS 18升级方法:

    ※1、刷机前请做好重要数据资料的备份,或勾选“保留用户资料刷机”,防止重要资料丢失;


    ※2、请确保移动设备未开启激活锁,或者知道 ID 锁帐号、密码,否则刷机后可能会无法激活设备;


    ※3、设备升级到 iOS 18后,将无法再降级到“苹果已关闭验证”的固件版本,即使之前使用备份了 SHSH 也不能降级。

    打开最新版电脑端,用数据线把手机设备连接到电脑。点击上方“智能刷机”进入到“一键刷机”界面,连接成功会自动匹配iOS 18固件,选择“保留用户资料刷机”立即刷机。

    iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

    以上就是iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版的详细内容,更多请关注php中文网其它相关文章!

    ios – NSDate()VS NSDate.date()在Swift

    ios – NSDate()VS NSDate.date()在Swift

    @H_301_1@
    我跟着 Bloc.io Swiftris tutorial,他们初始化一个日期:

    lastTick = NSDate.date()

    这会导致编译错误:

    'date()' is unavailable: use object construction 'NSDate()'

    应该等于:

    NSDate *lastTick = [NSDate date];

    (从NSDate reference)

    Apple改变了Swift interface to NSDate,因为我看到使用NSDate.date的其他例子?

    这只是NSDate或者你不能为任何Objective-C API调用类型方法?

    解决方法

    [NSDate date]是构造NSDate对象的工厂方法。

    如果你阅读了“使用Swift与Cocoa和Objective-C”指南,有一个与Objective-C apis交互的部分:

    For consistency and simplicity,Objective-C factory methods get mapped as convenience initializers in Swift. This mapping allows them to be used with the same concise,clear Syntax as initializers.”

    Excerpt From: Apple Inc. “Using Swift with Cocoa and Objective-C.” iBooks. 07000

    所以工厂方法:

    [NSDate date]

    在Swift中转换为初始化程序

    NSDate()

    它不只是NSDate你会发现这种模式,但在其他Cocoa API的工厂方法。

    ios – 在Swift 1.2中将自身作为参数传递给init方法

    ios – 在Swift 1.2中将自身作为参数传递给init方法

    以下类将’let’属性声明为隐式展开的变量.这之前适用于 Xcode 6.2:
    class SubView: UIView {
    
        let pandGestureRecognizer: UIPanGestureRecognizer!
    
        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            self.pandGestureRecognizer = UIPanGestureRecognizer(target: self,action: "panAction:")
        }
    
        func panAction(gesture: UIPanGestureRecognizer) {
            // ...
        }
    }

    更新到Xcode 6.3(使用Swift 1.2)后,会发生以下编译错误:

    Property 'self.panGestureRecognizer' not initialized at super.init call
    Immutable value 'self.panGestureRecognizer' may only be initialized once

    在super.init调用之前移动以下行:

    self.pandGestureRecognizer = UIPanGestureRecognizer(target: self,action: "panAction:")

    给出以下错误:

    'self' is used before super.init call

    属性’panGestureRecognizer’不需要变异,因此必须将其声明为常量’let’.由于它是常量,因此必须在声明时具有初始值,或者在init方法中初始化它.要初始化它,需要在’target’参数中传递’self’.

    其他线程建议将其声明为隐式解包可选,并在super.init调用后初始化它.这之前一直有效,直到我更新到Xcode 6.3.

    有没有人知道这种情况的正确实施或解决方法?

    解决方法

    问题

    问题是你使用let-optionals声明为let没有给出默认值nil(然而var是).以下是在Swift 1.2中引入的,否则将无效,因为在声明之后你将无法给myOptional一个值:

    let myOptional: Int?
    
    if myCondition {
        myOptional = 1
    } else {
        myOptional = nil
    }

    因此,你得到错误’属性’self.panGestureRecognizer’未在super.init调用’初始化’因为在调用super.init(coder:aDecoder)之前,因为panGestureRecognizer不是nil;它根本没有初始化.

    解决方案:

    1.将panGestureRecognizer声明为var,意味着它将被赋予默认值nil,然后在调用super.init(coder:aDecoder)之后可以更改.

    2.在我看来,更好的解决方案是:不要使用隐式展开的可选项,并使用初始值UIPanGestureRecognizer()声明panGestureRecognizer.然后在调用super.init后设置目标:

    class SubView: UIView {
        let panGestureRecognizer = UIPanGestureRecognizer()
    
        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
    
            panGestureRecognizer.addTarget(self,action: Selector("panAction:"))
        }
    }

    ios – 在Swift 2.0中以横向模式使用UIImagePickerController

    ios – 在Swift 2.0中以横向模式使用UIImagePickerController

    我正在编写仅限LandScape的iPad应用程序,我需要从库中拍照才能发送数据库,但图像上传屏幕仅适用于纵向模式.如何将其更改为横向模式?我读过一些关于UIPickerControllerDelegate的东西不支持横向模式,但是一些应用程序(例如iMessage)已经在使用它了.

    这是我的代码:

    class signUpViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate,UINavigationControllerDelegate,UIImagePickerControllerDelegate {
    
    
    func imagePickerController(picker: UIImagePickerController,didFinishPickingImage image: UIImage!,editingInfo: [NSObject : AnyObject]!) {
    
        print("Image Selected")
    
        self.dismissViewControllerAnimated(true,completion: nil)
    
        profileImageView.image = image
    
    }
    
    
    
    @IBAction func importimage(sender: AnyObject) {
    
        var image = UIImagePickerController()
        image.delegate = self
        image.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
        image.allowsEditing = false
    
        self.presentViewController(image,animated: true,completion: nil)
    }
    }

    解决方法

    它绝对支持横向模式.把这个扩展放在某个地方.最好在名为UIImagePickerController的文件SupportedOrientations.swift中

    extension UIImagePickerController
    {
        public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
            return .Landscape
        }
    }

    这使得所有UIImagePickerControllers都在您的应用程序环境中.您也可以对其进行子类化并覆盖此方法,以仅使子类具有横向能力:

    class LandscapePickerController: UIImagePickerController
    {
        public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
            return .Landscape
        }
    }

    最后,为了支持所有方向,您可以返回

    return [.Landscape,.Portrait]

    对于Swift 3:

    extension UIImagePickerController
        {
            override open var shouldAutorotate: Bool {
                    return true
            }
            override open var supportedInterfaceOrientations : UIInterfaceOrientationMask {
                    return .all
            }
    }

    关于ios – 在swift 2中调用和打印对象内部的对象swift 打印对象地址的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版、ios – NSDate()VS NSDate.date()在Swift、ios – 在Swift 1.2中将自身作为参数传递给init方法、ios – 在Swift 2.0中以横向模式使用UIImagePickerController等相关知识的信息别忘了在本站进行查找喔。

    本文标签: