GVKun编程网logo

如何使用可伸缩和纯净模式制作相同的iOS Swift App,仅在代码和资产上有一些差异

9

如果您对如何使用可伸缩和纯净模式制作相同的iOSSwiftApp,仅在代码和资产上有一些差异感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何使用可伸缩和纯净模式制作相同的iOSSwiftAp

如果您对如何使用可伸缩和纯净模式制作相同的iOS Swift App,仅在代码和资产上有一些差异感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何使用可伸缩和纯净模式制作相同的iOS Swift App,仅在代码和资产上有一些差异的各种细节,此外还有关于2016年全国大学生App大赛,Swift你的iOS!、ios – Swift指针算术和解除引用;将一些类似C的地图代码转换为Swift、ios – Swift:如何从不同的swift文件中调用函数、ios – 使用可选数组时,Swift flatMap会产生意外结果的实用技巧。

本文目录一览:

如何使用可伸缩和纯净模式制作相同的iOS Swift App,仅在代码和资产上有一些差异

如何使用可伸缩和纯净模式制作相同的iOS Swift App,仅在代码和资产上有一些差异

我有这个需求。

我开发了一个应用,我想复制它。我可以复制并粘贴项目,但是如果执行10次,则可能会出现问题。问题是,如果我在第十次重复中发现了一个错误,则我必须复查所有其他项目,而我不想这样做。

有没有解决此问题的干净方法?

换句话说,我只有一个大代码。我必须部署的应用程序之间的差异是:

  • 启动器图标
  • HTTP请求的域
  • 包裹名字
  • 开机画面
  • 应用名称
  • 应用内的一些整数
  • 一些资产

在Android中,我特别使用gradle来实现。如何使用Swift做同样的事情?

答案1

小编典典

创建具有多个目标的单个项目。每个目标都有一个不同的info.plist以及您需要进行的其他任何更改,但共享源。

2016年全国大学生App大赛,Swift你的iOS!

2016年全国大学生App大赛,Swift你的iOS!

总结

以上是小编为你收集整理的2016年全国大学生App大赛,Swift你的iOS!全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

ios – Swift指针算术和解除引用;将一些类似C的地图代码转换为Swift

ios – Swift指针算术和解除引用;将一些类似C的地图代码转换为Swift

我有一点似乎没有工作的 Swift代码……
// earlier,in Obj C...
    typedef struct _Room {
        uint8_t *map;
        int width;
        int height;
    } Room;

如果你很好奇,房间就是刺激roguelike游戏的一部分.我正在尝试在Swift中重写几个部分.这是看起来破碎的代码,以及我希望我做的评论:

let ptr = UnsafePointer<UInt8>(room.map) // grab a pointer to the map out of the room struct
let offset = (Int(room.width) * Int(point.y)) + Int(point.x) // calculate an int offset to the location I am interested in examining
let locationPointer = ptr + offset // pointer advances to point to the offset I want
var pointValue = ptr.memory // What I used to get with *ptr

这里出了点问题,因为简单的测试显示pointValue的值不是我所知道的我在地图上看到的,已经将一个非常简单的位置(1,1)设置为已知值.很明显,Swift不应该做这种事情,但它是一个转换,目的是学习Swift的方式,当我非常清楚语法时.

我希望错误在swift代码中 – 因为这一切都在目标C版本中工作.哪里出错?

解决方法

您正在指定locationPointer指向新位置,但仍在下一行中使用ptr,并且ptr的值尚未更改.将您的最后一行更改为:
var pointValue = locationPointer.memory

或者你可以改变指向var的指针并推进它:

var ptr = UnsafePointer<UInt8>(room.map) // grab a pointer to the map out of the room struct
let offset = (Int(room.width) * Int(point.y)) + Int(point.x) // calculate an int offset to the location I am interested in examining
ptr = ptr + offset // pointer advances to point to the offset I want
var pointValue = ptr.memory // What I used to get with *ptr

ios – Swift:如何从不同的swift文件中调用函数

ios – Swift:如何从不同的swift文件中调用函数

我的 Xcode 6 beta-2项目中有多个类型为UIViewController的swift文件.

我基本上想知道文件A中的一些数据在文件B中使用.

我的文件都是UIViewControllers,我创建了一个没有参数的函数,它返回UIViewController_A中的字符串.当我尝试在UIViewController_B中调用所述函数时,intellisense为我填写,但是我必须有一个自动填充为UIViewController_A的参数.

在代码中,LoginScreen.swift == ViewController_A和ViewResidentsTask == ViewController_B.

我的函数名为checkPrivs,存在于LoginScreen.swift中,如下所示:

func checkPrivs()-> String{
    return userPrivType
}

这就是我认为它应该被称为:

var userType = LoginScreen.checkPrivs()

当我尝试调用它时,这就是intellisense所做的事情:

var userType = LoginScreen.checkPrivs(LoginScreen)

这引发了一个错误,说“预期”,“分隔符”
不确定我应该用什么替换LoginScreen但我尝试过的所有内容(空,字符串,当前文件名)都会引发错误.

我是Xcode的新手,从c#背景来看,任何帮助都会非常感激.

答案:事实证明我在UIViewController类中声明了’loginScreen’,而我应该在类之外声明它.

解决方法

您应该首先创建LoginScreen的实例并在该对象上调用方法:
let login = LoginScreen()
var userType = login.checkPrivs()

ios – 使用可选数组时,Swift flatMap会产生意外结果

ios – 使用可选数组时,Swift flatMap会产生意外结果

我们有一个Person对象的数组,每个对象都有另一个String数组,这是可选的.
我们想要在我们的社会中整合汽车名称列表.

struct Person {
    let name: String
    let address: String
    let age: Int
    let income: Double
    let cars: [String]?
}
let personsArray = [Person(name:"Santosh",address: "Pune,India",age:34,income: 100000.0,cars:["i20","Swift VXI"]),Person(name: "John",address:"New York,US",age: 23,income: 150000.0,cars:["Crita",Person(name:"Amit",address:"Nagpure,age:17,income: 200000.0,cars:nil)]

let flatmapArray = personsArray.flatMap({$0.cars})
print(flatmapArray)

// Expected Result: [“i20”,“Swift VXI”,“Crita”,“Swift VXI”]

// Result: [[“i20”,“Swift VXI”],[“Crita”,“Swift VXI”]]

为什么它不给我一个字符串数组作为结果?

我在上面的代码中做了几处更改,如下面的代码,
我们尝试将空数组传递给第3个Person对象,而不是“nil”.

Person(name:"Amit",cars:Array())

结果是:

[[“i20”,[]]

仍然不是预期的结果.

如果我从汽车数组中删除可选,如,

let cars: [String]  
Person(name:"Amit",cars:Array())

然后它按预期工作.

结果:

[“i20”,“Swift VXI”]

如果成员类型为Collection是可选的,我不确定为什么它不给出上述结果?

解决方法

问题是,出于map和flatMap的目的,optionals是0或1个元素的集合.您可以直接在选项上调用map和flatMap而无需解包它们:

let foo: Int? = 5
foo.map { $0 * $0 } // Int? = 25; "collection of one element"
let bar: Int? = nil
bar.map { $0 * $0 } // Int? = nil; "collection of zero elements"

为了用更熟悉的术语来说明你目前的情况,你正在寻找相当于这个:

class Person {
    let cars: [[String]]
}

如果你有一个var人员:[Person]并且调用了person.flatMap {$0.cars},那么这个操作的结果类型无疑会是[[String]]:你从三层集合开始,最后得到两个.

这也是[String]实际发生的事情吗?而不是[[String]].

在您描述的情况下,我建议删除可选和使用空数组.在你的情况下,我不确定nil数组和空数组之间的区别是真正必要的:我的解释是nil数组意味着该人无法拥有汽车,而空数组意味着该人是能够拥有一辆车,但却没有.

如果你不能删除可选项,那么你需要调用flatMap两次以展平两层而不是只有一层:

persons.flatMap { $0.cars }.flatMap { $0 }

关于如何使用可伸缩和纯净模式制作相同的iOS Swift App,仅在代码和资产上有一些差异的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于2016年全国大学生App大赛,Swift你的iOS!、ios – Swift指针算术和解除引用;将一些类似C的地图代码转换为Swift、ios – Swift:如何从不同的swift文件中调用函数、ios – 使用可选数组时,Swift flatMap会产生意外结果的相关信息,请在本站寻找。

本文标签: