我使用Alamofire和SwiftyJSOn来解析JSON输出.它工作得很好,但有些网站给json提供了转义输出.我在下面使用Alamofire
Alamofire.request(.POST, url, parameters: param, encoding: .JSON)
.responseJSON { (req, res, json, error) in
var json = JSON(json!)
Run Code Online (Sandbox Code Playgroud)
Site为我提供了带有转义字符串的JSON结果,因此SwiftyJSON无法对其进行解码.我怎样才能在下面转换
{
"d": "{\"UniqeView\":{\"ArrivalDate\":null,\"ArrivalUnitId\":null,\"DeliveryCityName\":null,\"DeliveryTownName\":null},\"ErrorMessage\":null,\"Message\":null,\"IsFound\":false,\"IsSuccess\":true}"
}
Run Code Online (Sandbox Code Playgroud)
喜欢的东西
{
"d": {
"UniqeView": {
"ArrivalDate": null,
"ArrivalUnitId": null,
"DeliveryCityName": null,
"DeliveryTownName": null
},
"ErrorMessage": null,
"Message": null,
"IsFound": false,
"IsSuccess": true
}
}
Run Code Online (Sandbox Code Playgroud) Xcode 7 beta 6和NSFetchedResultsController今天让我很头疼.如果我使用Xcode 6编译相同的(使用Swift 2修复)代码,程序可以在设备和模拟器(iOS 7,iOS8)上运行.但是,如果我使用Xcode 7 beta 6进行编译,则只要我更新Core Data,程序就会在设备(iOS 8.4)上崩溃,并显示以下错误消息.
我得到类似于下面的错误
CoreData:错误:严重的应用程序错误.在调用-controllerDidChangeContent:期间,从NSFetchedResultsController的委托中捕获到异常.无效更新:第0节中的行数无效.更新(2)后现有部分中包含的行数必须等于更新前该部分中包含的行数(2),加上或减去数字从该部分插入或删除的行(插入2个,删除1个)并加上或减去移入或移出该部分的行数(0移入,0移出).用户信息(null)
有时它会因为另一个错误而崩溃
从空闲列表中出列的无效指针***在malloc_error_break中设置断点以进行调试
//NSFetchedResultsController delegates
func controllerWillChangeContent(controller: NSFetchedResultsController) {
self.tableView.beginUpdates()
}
func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {
switch type {
case .Insert:
self.tableView.insertSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade)
case .Delete:
self.tableView.deleteSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade)
default:
return
}
}
func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
switch type {
case .Insert:
print("Insert New: \(newIndexPath) Old: …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个Cocoapods库.我的图书馆将包含Google-Mobile-Ads-SDK作为依赖项.我使用了以下命令
pod lib create BannerViewController
> my email address
What language do you want to use?? [ ObjC / Swift ]
> Swift
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
Which testing frameworks will you use? [ Quick / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
Run Code Online (Sandbox Code Playgroud)
然后我编辑了BannerViewController.podspec添加了以下行
s.dependency 'Google-Mobile-Ads-SDK', '~> 7.0'
Run Code Online (Sandbox Code Playgroud)
我试着用 pod lib lint BannerViewController.podspec
[!] …Run Code Online (Sandbox Code Playgroud) 我无法理解map和flatMap在RxSwift中的区别.在RxSwift操场示例和书籍中,flatMap用作转换Observables,它具有内部Observable属性.
但是我看到flatMap直接用于基本类型的Observable.例如,对于下面的代码,它们都产生相同的输出.有人可以帮我理解map和flatMap之间的区别
struct Student {
let score:Int
}
let ryan = Student(score:80)
let student = PublishSubject<Student>()
let deneme = student.map({ val in
return Student(score: val.score+10)
})
deneme.subscribe(onNext: {
print("StudentMAP: \($0.score)")
})
let deneme2 = student.flatMap({ val -> Observable<Student> in
return Observable.of(Student(score: val.score + 10))
})
deneme2.subscribe(onNext: {
print("StudentFlatMAP: \($0.score)")
})
student.onNext(ryan)
Run Code Online (Sandbox Code Playgroud) 我的目标是iOS 10,无法确定应该选择哪种方法,为什么?由于以下两个代码均返回对象数组。
CoreDataStack.shared.viewContext.perform {
do {
let allObjects = try CoreDataStack.shared.viewContext.fetch(fetchRequest)
print(allObjects)
} catch {
print("Error: \(error)")
}
}
CoreDataStack.shared.viewContext.perform {
do {
let allRules = try fetchRequest.execute()
print(allRules)
} catch {
print("Error: \(error)")
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用request-promise模块来检查网站是否正在使用代理.我试图找到足够快的代理,在5秒内回答.因此,如果请求在5秒内没有超时,我只会添加对象.
对于某些代理,即使promise解析,节点脚本也会挂起一段时间.我找不到这种延误的原因.我看到它打印Done但它挂起.1分钟后10秒钟,脚本退出.由于我的代码或打开的套接字等操作系统问题,这是否挂起?
const rp = require('request-promise');
const testProxies = [
{
"ipAddress": "80.241.219.83",
"port": 3128,
},
{
"ipAddress": "45.55.27.246",
"port": 80
},
{
"ipAddress": "144.217.197.71",
"port": 8080,
},
{
"ipAddress": "104.131.168.255",
"port": 80,
},
];
function CheckSites(sitesArray,site) {
let ps = [];
for (let i = 0; i < sitesArray.length; i++) {
let proxy = sitesArray[i];
let ops = {
method: 'GET',
resolveWithFullResponse: true,
proxy: 'http://' + proxy.ipAddress + ':' + proxy.port,
uri:site,
};
let resp …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用UISearchController但是我面临保留我无法解决的问题.MainTableview有两个部分.
第1节
过滤数据基于一些正则表达式
第2节
所有数据
我将UISearchController添加到我的tableview中,并将ResultsTableController作为resultsTableController附加.当用户搜索某些东西时,它工作,ResultsTableController出现,因为我将tableview委托设置为self,从我的MainTableViewController中的ResultsTableController调用didSelectRowAtIndexPath中选择项目.但是,如果用户从resultsTableController中选择了某些内容,则会出现分配问题.
以下是针对不同场景的
MainTableViewController.swift
var searchController: UISearchController!
// Secondary search results table view.
var resultsTableController: ResultsTableController!
var allCompanies = ["Data1","Data2","Data3"]
override func viewDidLoad() {
super.viewDidLoad()
resultsTableController = ResultsTableController()
// We want to be the delegate for our filtered table so didSelectRowAtIndexPath(_:) is called for both tables.
resultsTableController.tableView.delegate = self
searchController = UISearchController(searchResultsController: resultsTableController)
searchController.searchResultsUpdater = self
searchController.searchBar.sizeToFit()
tableView.tableHeaderView = searchController.searchBar
searchController.delegate = self
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.delegate = self
definesPresentationContext = true
} …Run Code Online (Sandbox Code Playgroud) 通过考虑用户区域设置,如何将段落中每个句子的第一个单词大写?我想要实现的是无论句子里面的情况如何,每个单词的第一个字母都是大写的,其余的都是小写的.首先将所有内容转换为小写,然后获得第一个字母并制作大写字母,最后将它们一起添加,我只能做一个句子.我的问题与如何使用Swift iOS将字符串中的每个单词大写不同,因为我不想将每个单词大写.我只想把每个句子的第一个单词弄清楚.capitalizedString圈
"this is first sentence. this is second sentence."
Run Code Online (Sandbox Code Playgroud)
至
"This Is First Sentence. This Is Second Sentence."
Run Code Online (Sandbox Code Playgroud)
我想要的是
"This is first sentence. This is second sentence."
Run Code Online (Sandbox Code Playgroud)
我的问题也不同于每个句子的首字母大写,因为@ rintaro的代码不适用于我的下面的例子.它保留原始文本中的大写字母完整.使用@ rintaro的代码;
之前
"someSentenceWith UTF text ????. anotherSentence?üÜ?"
Run Code Online (Sandbox Code Playgroud)
后
"SomeSentenceWith UTF text ????. AnotherSentence?üÜ?."
Run Code Online (Sandbox Code Playgroud)
我想要实现的目标,
"Somesentencewith utf text i???. Anothersentence?üü?."
Run Code Online (Sandbox Code Playgroud)
我的代码只能进行部分转换.
var description = "someSentenceWith UTF text ????. anotherSentence?üÜ?"
description = description.lowercaseStringWithLocale(NSLocale.currentLocale())
let first = description.startIndex
let rest = advance(first,1)..<description.endIndex
let capitalised = description[first...first].uppercaseStringWithLocale(NSLocale.currentLocale()) + …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个动画来创建一个移动物体的幻觉.因此,对象将保持在相同位置,但是比屏幕宽度宽的背景图像视图将无限移动.我的代码不是很顺利.
let backgroundView = UIView()
backgroundView.backgroundColor = UIColor.blueColor()
backgroundView.frame = CGRect(x: 0, y: 120, width: 50, height: 50)
self.view.addSubview(backgroundView)
let options = UIViewAnimationOptions.Repeat | UIViewAnimationOptions.CurveLinear
UIView.animateWithDuration(2.0, delay: 0.0, options: options, animations: {
backgroundView.frame = CGRect(x: 420, y: 120, width: 50, height: 50)
}, completion: nil)
Run Code Online (Sandbox Code Playgroud) 我试图将我的对象转换为JSON但它不会将我的枚举转换为0.当我打印枚举时我得到0但是当我在对象内部使用它时它变为空.如果我使用字符串,而不是整数,它的工作原理.
(function () {
'use strict';
var ItemStatus = {
'Prepared': 0,
'Ongoing': 1,
'Finished': 2
};
module.exports = ItemStatus;
})();
(function () {
'use strict';
var ItemStatus = require('./itemstatus');
function ItemDetail(detail) {
detail = detail || {};
this.message = detail.message || null;
this.location = detail.location || null;
this.status = detail.status || null;
this.date = detail.date || null;
}
module.exports = ItemDetail;
})();
(function () {
'use strict';
var ItemDetail = require('./itemdetail');
var ItemStatus = require('./itemstatus');
function Item(item) {
item …Run Code Online (Sandbox Code Playgroud) 我正在尝试基于网络报废启动一个项目.我已经为JSON的不同平台设置了工具我使用SwiftyJSON,而对于原始HTML我使用了hpple.我的问题是我正在尝试为内容设置一些泛型类,并为内容的fetcher设置一些泛型类.因为每个操作都是这样的,
登录如果有用户名或密码提供它.如果它具有验证码显示并使用结果使用Alamofire Scrap获取数据,则可以使用JSON或HTML填充内容类.
我想知道是否有办法定义某种协议,枚举或通用模板,以便每个类我可以定义这些不同的功能.我想如果我做不到这一点,我会一遍又一遍地编写相同的代码.这就是我想出的.如果你能帮助我正确设置,我将不胜感激.
enum Company:Int {
case CNN
case BBC
case HN
case SO
var captcha:Bool {
switch self {
case CNN:
return false
case BBC:
return true
case HN:
return true
case SO:
return false
}
}
var description:String {
get {
switch self {
case CNN:
return "CNN"
case BBC:
return "BBC"
case HN:
return "Hacker News"
case SO:
return "Stack Overflow"
}
}
}
}
class Fetcher {
var username:String?
var password:String?
var url:String
var company:Company …Run Code Online (Sandbox Code Playgroud) 我有一个核心数据应用程序。就像是说一个新闻应用。每个条目都有名称,id,日期,发布者,详细信息等。主要的iOS应用可以包含很多News条目。我只想显示WatchOS应用程序的前三个新闻。由于获取新闻条目需要使用键盘,因此我无法从Watch端启动传输。共享数据的最佳策略是什么?我想过以下情况
使用WatchConnectivity transferFile发送核心数据文件
每当添加新闻时,在保存到CoreData之前,请先通过WatchConnectivity发送。
将数据保存到核心数据后,查询最后三个对象并将其发送。
您能帮我找到一种更好的将iOS应用与WatchOS应用同步的方法吗?谢谢。