javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

ios-如何在Xcode 9上构建Swift 3项目?

Xcode 9发行说明说,支持Swift 3编译:

一个Swift 4和Swift 3,Swift 4和Swift 3目标的编译器可以在同一项目中一起编译。

我已经安装了Xcode 9 beta。但是,当我按Build时,它会显示很多错误。 在Xcode 9中使用Swift 3时需要做一些特殊的准备吗?

UPD:Module compiled with Swift 3.1 cannot be imported in Swift 4.0

使用Swift 3.1编译的模块无法在Swift 4.0中导入

trans by 2020-08-11T22:07:59Z

如何在核心数据中使用swift 4 Codable?

可编码似乎是一个非常令人兴奋的功能。 但是我想知道我们如何在核心数据中使用它? 特别是,是否可以直接从NSManagedObject编码JSON或从其解码JSON?

我尝试了一个非常简单的示例:

enter image description here

并自己定义Codable

import CoreData

@objc(Foo)
public class Foo: NSManagedObject, Codable {}

但是当这样使用它时:

let json = """
{
    "name": "foo",
    "bars": [{
        "name": "bar1",
    }], [{
        "name": "bar2"
    }]
}
""".data(using: .utf8)!
let decoder = JSONDecoder()
let foo = try! decoder.decode(Foo.self, from: json)
print(foo)

编译器因以下错误而失败:

super.init isn't called on all paths before returning from initializer

而目标文件是定义Codable的文件

我想我可能做错了,因为我什至没有通过Codable,但是我不知道该贴在哪里。

核心数据是否支持Codable

trans by 2020-07-27T02:22:04Z

nsdate-Swift 3-查找两个日期之间的日历天数

我在Swift 2.3中做到的方式是:

    let currentDate         = NSDate()
    let currentCalendar     = NSCalendar.currentCalendar()

    var startDate : NSDate?
    var endDate   : NSDate?

   // The following two lines set the `startDate` and `endDate` to the start of the day

    currentCalendar.rangeOfUnit(.Day, startDate: &startDate, interval: nil, forDate: currentDate)
    currentCalendar.rangeOfUnit(.Day, startDate: &endDate, interval: nil, forDate: self)

    let intervalComps = currentCalendar.components([.Day], fromDate: startDate!, toDate: endDate!, options: [])

    print(intervalComps.day)

现在,Swift 3改变了一切。我必须使用NSCalendarNSDate,通过不断地使用as进行类型转换,或者找到Swift 3的实现方法。

在Swift 3中执行此操作的正确方法是什么?

trans by 2020-07-26T04:45:54Z

json-Swift 4 Decodable使用密钥直到解码tim才知道

Swift 4 Decodable协议如何处理包含名称直到运行时才知道的密钥的字典? 例如:

  [
    {
      "categoryName": "Trending",
      "Trending": [
        {
          "category": "Trending",
          "trailerPrice": "",
          "isFavourit": null,
          "isWatchlist": null
        }
      ]
    },
    {
      "categoryName": "Comedy",
      "Comedy": [
        {
          "category": "Comedy",
          "trailerPrice": "",
          "isFavourit": null,
          "isWatchlist": null
        }
      ]
    }
  ]

在这里,我们有一系列的字典; 第一个具有键categoryNameTrending,第二个具有键categoryNameComedycategoryName964的值告诉我第二个键的名称。 如何使用Decodable来表达呢?

trans by 2020-02-20T12:10:26Z

ios-无法从Objective-C访问Swift 4类:“在类型的对象上找不到属性”

使用最新的Xcode 9 Beta,我似乎完全无法访问Swift类的属性。 更奇怪的是,我可以访问该类本身以实例化它或其他,但是完全无法访问它的属性。

因此,如果我有这个Swift类:

import UIKit

class TestViewController: UIViewController {
    var foobar = true
}

我尝试这样做:

TestViewController *testViewController = [[TestViewController alloc] init]; // success
testViewController.foobar; // error

我到底在做什么错? Xcode 9的新项目。

trans by 2020-01-17T12:52:50Z

swift 4-在带有继承的Swift 4中使用Codable

使用类继承是否会破坏类的可解码性。 例如下面的代码

class Server : Codable {
    var id : Int?
}

class Development : Server {
    var name : String?
    var userId : Int?
}

var json = "{\"id\" : 1,\"name\" : \"Large Building Development\"}"
let jsonDecoder = JSONDecoder()
let item = try jsonDecoder.decode(Development.self, from:json.data(using: .utf8)!) as Development

print(item.id ?? "id is nil")
print(item.name ?? "name is nil") here

输出为:

1
name is nil

现在,如果我将其反转,则名称会解码,而id不会。

class Server {
    var id : Int?
}

class Development : Server, Codable {
    var name : String?
    var userId : Int?
}

var json = "{\"id\" : 1,\"name\" : \"Large Building Development\"}"
let jsonDecoder = JSONDecoder()
let item = try jsonDecoder.decode(Development.self, from:json.data(using: .utf8)!) as Development

print(item.id ?? "id is nil")
print(item.name ?? "name is nil")

输出为:

id is nil
Large Building Development

而且您不能在两个类中都表示Codable。

trans by 2019-11-02T23:42:24Z

json-使用Swift 4中的JSONDecoder,丢失的键可以使用默认值而不是必须是可选属性吗?

Swift 4添加了新的Codeable协议。 当我使用JSONDecoder时,似乎要求我的Codeable类的所有非可选属性在JSON中具有键,否则会引发错误。

使类的每个属性为可选似乎是不必要的麻烦,因为我真正想要的是使用json中的值或默认值。 (我不希望该属性为零。)

有没有办法做到这一点?

class MyCodable: Codable {
    var name: String = "Default Appleseed"
}

func load(input: String) {
    do {
        if let data = input.data(using: .utf8) {
            let result = try JSONDecoder().decode(MyCodable.self, from: data)
            print("name: \(result.name)")
        }
    } catch  {
        print("error: \(error)")
        // `Error message: "Key not found when expecting non-optional type
        // String for coding key \"name\""`
    }
}

let goodInput = "{\"name\": \"Jonny Appleseed\" }"
let badInput = "{}"
load(input: goodInput) // works, `name` is Jonny Applessed
load(input: badInput) // breaks, `name` required since property is non-optional
trans by 2019-10-03T13:10:27Z

ios - Xcode 9:使用Swift 3.1编译的模块无法在Swift 4.0中导入

更新到Xcode 9后,我尝试构建我的一个项目。

我使用FacebookLogin窗格。我在FacebookLogin / LoginButton.swift中出现编译器错误

@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0

在目标的构建设置中,Swift语言版本设置为Swift 3.2。

Screenshot added

我想我需要等待Facebook更新他们的pod吗? 或其他建议?

谢谢 !

trans by 2019-09-19T22:59:08Z

swift - 导航栏rightbaritem图像按钮错误iOS 11

此代码在ios10中正常工作。 我得到我的标签和图像按钮,这是用户照片配置文件,圆形圆形..好的。 但是当运行xcode 9 ios11模拟器时,我会把它拉出来。 按钮框必须是32x32,当检查SIM并获取视图并告诉xcode描述视图时,我得到170x32或类似的输出。

继承我的代码。

let labelbutton = UIButton( type: .system)
    labelbutton.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside)
    labelbutton.setTitleColor(UIColor.white, for: .normal)
    labelbutton.contentHorizontalAlignment = .right
    labelbutton.titleLabel?.font = UIFont.systemFont(ofSize: 18.00)



    let button = UIButton(type: .custom)
     button.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside)
     button.frame = CGRect(x: 0, y: 0, width: 32, height: 32)
     button.setTitleColor(UIColor.white, for: .normal)
     button.setTitleColor(UIColor.white, for: .highlighted)


    var buttomItem : UIBarButtonItem = UIBarButtonItem()
    buttomItem.customView = button
    buttomItem.target = self
    buttomItem.action = "ToLogin"

    var labelItem : UIBarButtonItem = UIBarButtonItem()
    labelItem.customView = labelbutton
    labelItem.target = self
    labelItem.action = "ToLogin"


    if let user = PFUser.current() {
        print("LOGIN : checkiando si existe usuario ")
            labelbutton.setTitle(USERNAME, for: UIControlState.normal)
            labelbutton.sizeToFit()

        if(user["profile_photo_url"] != nil) {
            print(" ENCONTRO PROFILE PHOTO URL NOT NIL Y ES \(user["profile_photo_url"])")
            let photoURL = user["profile_photo_url"] as! String
            let a = LoginService.sharedInstance
            a.downloadImage(url: photoURL, complete: { (complete) in

                if (complete) {

                    button.setImage(LoginService.sharedInstance.profile_photo! , for: UIControlState.normal)

                    button.layer.cornerRadius = 0.5 * button.bounds.size.width
                   // button.imageView!.contentMode = .scaleAspectFit
                   // button.imageView!.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
                    //button.imageView!.contentMode = .scaleAspectFit
                    //button.imageView!.clipsToBounds = true
                    //button.imageView!.layer.cornerRadius = 60
                    button.clipsToBounds = true
                    self.NavigationItem.rightBarButtonItems = [buttomItem,labelItem]
                }


            })
        } else {
                self.NavigationItem.rightBarButtonItem = labelItem

        }
            print(" EL FRAME DEL BUTTON ES \(button.frame)")

    } else {

        labelbutton.setTitle("Login", for: UIControlState.normal)
        labelbutton.sizeToFit()
        self.NavigationItem.rightBarButtonItem = labelItem

    }

enter image description here

trans by 2019-08-13T18:39:29Z

ios - Xcode 9:使用Swift 3.1编译的模块无法在Swift 4.0中导入

更新到Xcode 9后,我尝试构建我的一个项目。

我使用FacebookLogin pod。我在FacebookLogin / LoginButton.swift中有编译器错误

@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0

在我的目标构建设置中,Swift语言版本设置为Swift 3.2。

Screenshot added

我想我需要等待Facebook更新他们的pod? 还是其他任何建议?

谢谢 !

trans by 2019-04-25T13:12:38Z

swift4 - 如何在Swift 4中使用字符串切片下标?

我有以下用Swift 3编写的简单代码:

let str = "Hello, playground"
let index = str.index(of: ",")!
let newStr = str.substring(to: index)

从Xcode 9 beta 5,我得到以下警告:

'substring(to:)'已弃用:请使用String切片带有'partial range from'运算符的下标。

如何在Swift 4中使用具有部分范围的切片下标?

trans by 2019-03-05T08:18:39Z

swift4 - 不推荐在Swift 4模式下使用Swift 3 @objc推理?

简而言之,在使用Xcode 9 Beta时,我遇到了以下警告:

不推荐在Swift 4模式下使用Swift 3 @objc推理。 请解决已弃用的@objc推理警告,使用“使用已弃用的Swift 3 @objc推理”日志记录测试代码,并禁用Swift 3 @objc推理。**

经过一些研究,我仍然不知道如何解决这个问题。我将非常感谢有关如何解决此问题的任何提示以及对正在发生的事情的解释。

我的目标是更好地理解我的代码发生了什么。

trans by 2019-01-07T04:05:13Z

1 共1页