我刚刚将我的应用程序代码更新到最新版本的Swift,我有这个功能:
func setupGraphDisplay() {
//Use 7 days for graph - can use any number,
//but labels and sample data are set up for 7 days
//let noOfDays:Int = 7
//1 - replace last day with today's actual data
graphView.graphPoints[graphView.graphPoints.count-1] = counterView.counter
//2 - indicate that the graph needs to be redrawn
graphView.setNeedsDisplay()
maxLabel.text = "\((graphView.graphPoints).max()!)"
print((graphView.graphPoints).max()!)
//3 - calculate average from graphPoints
let average = graphView.graphPoints.reduce(0, +)
/ graphView.graphPoints.count
averageWaterDrunk.text = "\(average)"
//set up labels
//day of week labels are …Run Code Online (Sandbox Code Playgroud) 我试图在我的iOS应用程序中制作一个教程屏幕,用户滑过几张图片以了解该应用程序.一切都很好,除非我构建我的项目,我在第一行代码上得到以下错误:
ViewController类没有初始值设定项
我做错了什么?
我的ViewController.swift代码如下
import UIKit
//line below is where I get the error
class ViewController: UIViewController, UIPageViewControllerDataSource {
//end
var pageViewController: UIPageViewController
var pageTitles: NSArray!
var pageImages: NSArray!
override func viewDidLoad() {
super.viewDidLoad()
self.pageTitles = NSArray(objects: "", "", "")
self.pageImages = NSArray(objects: "page1", "page2", "page3")
self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as!
UIPageViewController
self.pageViewController.dataSource = self
var startVC = self.viewControllerAtIndex(0) as ContentViewController
var viewControllers = NSArray(object: startVC)
self.pageViewController.setViewControllers(viewControllers as [AnyObject], direction: .Forward, animated: true, completion: nil)
self.addChildViewController(self.pageViewController)
self.view.addSubview(self.pageViewController.view)
self.pageViewController.didMoveToParentViewController(self)
}
override func …Run Code Online (Sandbox Code Playgroud) 我有两个项目都使用JSQMessagesViewController,但在其中一个我收到错误:"无法构建Objective-C模块'JSQMessagesViewController'",而另一个工作正常......两者之间几乎没有区别项目,我如何让JSQMessagesViewController工作,因为它对我的应用程序至关重要.谢谢.
我刚刚下载了Xcode 8 Beta,因此我可以在我的应用程序中包含一些新的iOS 10框架.但是,在将我的代码从Swift 2转换为Swift 3的过程中,我遇到了几个错误.除了一个超级烦人之外我修好了.
我收到错误:
无法调用非函数类型'JSQMessagesCollectionView!'的值 在以下代码行:
let cell = super.collectionView(collectionView, cellForItemAtIndexPath: indexPath) as! JSQMessagesCollectionViewCell
Run Code Online (Sandbox Code Playgroud)
这是我的整个上下文功能:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell{
let cell = super.collectionView(collectionView, cellForItemAtIndexPath: indexPath) as! JSQMessagesCollectionViewCell
let message = messages[indexPath.item]
if message.senderId == senderId {
cell.textView!.textColor = UIColor.whiteColor()
} else {
cell.textView!.textColor = UIColor.blackColor()
}
return cell
}
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
Ps如果这有帮助,这是我的整个代码块:
import UIKit
import Firebase
import JSQMessagesViewController
class ChatViewController: JSQMessagesViewController {
// MARK: Properties
var rootRef = FIRDatabase.database().reference()
var messageRef: FIRDatabaseReference!
var messages …Run Code Online (Sandbox Code Playgroud) 我正在使用Python构建数据包嗅探程序,但是我已经遇到了速度提升.出于某种原因,我认为套接字没有正确导入,因为我在运行程序时收到以下消息:AttributeError: module 'socket' has no attribute 'AF_PACKET'
我正在使用OS X和Pycharm是我的IDE,如果有帮助我正在运行最新版本的Python.
无论如何,到目前为止我的完整程序是:
import struct
import textwrap
import socket
def main():
connection = socket.socket(socket.AF_PACKET, socket.SOCKET_RAW, socket.ntohs(3))
while True:
rawData, address = connection.recvfrom(65535)
reciever_mac, sender_mac, ethernetProtocol, data = ethernet_frame(rawData)
print('\nEthernet Frame: ')
print('Destination: {}, Source: {}, Protocol: {}'.format(reciever_mac, sender_mac, ethernetProtocol))
# Unpack ethernet frame
def ethernet_frame(data):
reciever_mac, sender_mac, protocol = struct.unpack('! 6s 6s H', data[:14])
return getMacAddress(reciever_mac), getMacAddress(sender_mac), socket.htons(socket), data[14:]
# Convert the Mac address from the jumbled up form from above into …Run Code Online (Sandbox Code Playgroud) 我有一个使用 Firebase 在用户之间发送和接收消息的应用程序。在将我的代码更新到新的 Swift 3 以便我可以将 iOS 10 的酷炫新功能添加到我的应用程序的过程中,我遇到了几个错误。我能够在运行时修复除此之外的大多数问题:
Terminating app due to uncaught exception 'InvalidPathValidation', reason: '(child:) Must be a non-empty string and not contain '.' '#' '$' '[' or ']''
Run Code Online (Sandbox Code Playgroud)
我不知道是什么原因造成的。用户登录时,其用户 ID 会打印到控制台,但只要按下登录按钮,我的应用程序就会崩溃。在我更新到 Swift 3 之前,这个错误是不存在的,实际上是在我修复了应用程序另一部分的错误后才出现的。
无论如何,我的应用程序中只有两个主要类:LoginViewController和ChatViewController。
这是代码LoginViewController:
import UIKit
import Firebase
class LoginViewController: UIViewController {
// MARK: Properties
var ref: FIRDatabaseReference! // 1
var userID: String = ""
override func viewDidLoad() {
super.viewDidLoad()
ref = FIRDatabase.database().reference() // 2
}
@IBAction func …Run Code Online (Sandbox Code Playgroud) 所以我想在用户点击按钮时收集用户位置,并稍后在我的应用中使用该位置.使用我当前的实现,当点击按钮时,应该提示用户允许共享位置,然后他们应该登录到应用程序(如果您想知道的话,通过Firebase匿名),并且应该打印用户位置信息到控制台.提示有效,但是在点击允许位置按钮后,我的应用程序终止due to uncaught exception 'NSInternalInconsistencyException'
原因是 'Delegate must respond to locationManager:didUpdateLocations:'
这很奇怪,因为didUpdateLocations:我的代码中有一个函数.
我不知道发生了什么,任何帮助表示赞赏.我的ViewController代码如下,谢谢!
/*
* Copyright (c) 2016 Ahad Sheriff
*
*/
import UIKit
import Firebase
import CoreLocation
class LoginViewController: UIViewController {
// MARK: Properties
var ref: FIRDatabaseReference! // 1
var userID: String = ""
var locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
ref = FIRDatabase.database().reference() // 2
}
@IBAction func loginDidTouch(sender: AnyObject) {
//ask user to enable location services
locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
//collect user's …Run Code Online (Sandbox Code Playgroud) 我正在用 Python 编写一个程序,所有代码看起来都不错,除非我从终端运行程序时收到以下错误消息:
Traceback (most recent call last):
File "packetSniffer.py", line 25, in <module>
main()
File "packetSniffer.py", line 10, in main
reciever_mac, sender_mac, ethernetProtocol, data = ethernet_frame(rawData)
File "packetSniffer.py", line 17, in ethernet_frame
return getMacAddress(reciever_mac), getMacAddress(sender_mac), socket.htons(protocol), data[14:]
File "packetSniffer.py", line 21, in getMacAddress
bytesString = map('{:02x}'.format, bytesAddress)
ValueError: Unknown format code 'x' for object of type 'str'
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我整个程序的代码,有人可以帮忙吗?
import struct
import textwrap
import socket
def main():
connection = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(3))
while True:
rawData, address = connection.recvfrom(65535)
reciever_mac, sender_mac, …Run Code Online (Sandbox Code Playgroud) 我正在研究Swift中的一个项目,我只是自动将代码转换Swift 1为Swift 2.但是我收到错误:
无法将'[AnyObject]'类型的值转换为预期的参数类型'[UIViewController]?'
在下面的代码中:
self.pageViewController.setViewControllers(viewControllers as [AnyObject], direction: .Forward, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
我原本以为如果我说的话问题会解决,as!而不是as当我这样做时,我收到了以下信息:
从'NSArray'到'[AnyObject]'的强制演员总是成功; 你的意思是用'as'吗?
接下来是这个错误:
无法将'[AnyObject]'类型的值转换为预期的参数类型'[UIViewController]?'
这是我的完整上下文代码:
override func viewDidLoad()
{
super.viewDidLoad()
self.pageTitles = NSArray(objects: "", "", "")
self.pageImages = NSArray(objects: "page1", "page2", "page3")
self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! UIPageViewController
self.pageViewController.dataSource = self
var startVC = self.viewControllerAtIndex(0) as ContentViewController
var viewControllers = NSArray(object: startVC)
self.pageViewController.setViewControllers(viewControllers as! [AnyObject], direction: .Forward, animated: true, completion: nil)
self.pageViewController.view.frame = CGRectMake(0, 30, self.view.frame.width, self.view.frame.size.height - …Run Code Online (Sandbox Code Playgroud) 因此,自宣布iAD即将关闭以来,我开始寻找另一种通过广告从我的应用中获利的方法.随着谷歌5月18日对Firebase的更新(将AdMob与其集成非常吸引人),我决定在我的应用中添加一个简单的横幅广告.我按照文档(https://firebase.google.com/docs/admob/ios/quick-start#load_an_ad_into_gadbannerview)中的所有说明操作,但遗憾的是我遇到了一些严重错误.
这是文档中的代码,它几乎与我的应用程序代码相同:
import UIKit
import GoogleMobileAds
class ViewController: UIViewController {
@IBOutlet weak var bannerView: GADBannerView!
override func viewDidLoad() {
super.viewDidLoad()
bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerView.rootViewController = self
bannerView.loadRequest(GADRequest())
}
}
Run Code Online (Sandbox Code Playgroud)
在@IBOutlet weak var bannerView: GADBannerView!我收到错误:weak may only be applied to class and class-bound protocol types, not '<<error type>>这是我生命中从未见过的错误!
我也得到了Use of unresolved identifier 'GADRequest,我不明白,因为这是GADBannerView的内置方法......?
我使用cocoapods安装了所有必需的库,这应该不是问题.任何帮助,将不胜感激.谢谢!
我的工作使用一个JSQMessagesViewController消息传递应用程序,我想给另一个变量,一个整数相关联score,其中每个消息(具有默认值,例如沿senderID,text和displayName).这就是我尝试实现这个的方法:
func addMessage(id: String, text: String, displayName: String, score: Int) {
// Make sure the character count is between 10 and 140, then add message to message list to display
if (text.characters.count <= 10 || text.characters.count >= 140) {
}
else {
let message = JSQMessage(senderId: id, displayName: displayName, text: text, score: score)
messages.append(message)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误消息:
Argument labels '(senderId:, displayName:, text:, score:)' do not match any available overloads
我只能假设这是因为有一些关于JSQMessage对象可以容纳的数据的预设定义,我只是不确定如何覆盖它以便我可以将其他变量与我的消息相关联.
注意:我试图直接更改JSQMessagesViewController框架本身(在JSQMessage.h …