小编Mar*_*ers的帖子

从Swift函数中的异步调用返回数据

我在Swift项目中创建了一个实用程序类来处理所有REST请求和响应.我已经构建了一个简单的REST API,因此我可以测试我的代码.我创建了一个需要返回NSArray的类方法,但由于API调用是异步的,我需要从异步调用中的方法返回.问题是异步返回void.如果我在Node中执行此操作,我会使用JS承诺,但我无法找到适用于Swift的解决方案.

import Foundation

class Bookshop {
    class func getGenres() -> NSArray {
        println("Hello inside getGenres")
        let urlPath = "http://creative.coventry.ac.uk/~bookshop/v1.1/index.php/genre/list"
        println(urlPath)
        let url: NSURL = NSURL(string: urlPath)
        let session = NSURLSession.sharedSession()
        var resultsArray:NSArray!
        let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
            println("Task completed")
            if(error) {
                println(error.localizedDescription)
            }
            var err: NSError?
            var options:NSJSONReadingOptions = NSJSONReadingOptions.MutableContainers
            var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: options, error: &err) as NSDictionary
            if(err != nil) {
                println("JSON Error \(err!.localizedDescription)")
            }
            //NSLog("jsonResults %@", jsonResult)
            let results: …
Run Code Online (Sandbox Code Playgroud)

rest asynchronous ios swift

83
推荐指数
4
解决办法
5万
查看次数

iOS 6 - 我可以在解开segue时返回数据吗?

我使用故事板工具创建了一个简单的展开segue.我在要放松的视图中创建了以下事件处理程序:

-(IBAction)quitQuiz:(UIStoryboardSegue *)segue {
    NSLog(@"SEGUE unwind");
}
Run Code Online (Sandbox Code Playgroud)

这会正确触发并解开segue(消息被记录).

当用户退出测验时,我想传回一些数据并且一直在努力解决这个问题.任何人都可以建议吗?

iphone xcode objective-c ios segue

25
推荐指数
4
解决办法
2万
查看次数

使用GitLab持续部署NodeJS

我有一个在NodeJS中开发的API,并通过.gitlab-ci.yml文件成功建立了持续集成.如果所有测试都在主分支上传递,则下一步是设置到Heroku的连续部署.

有很多关于Ruby和Python应用程序部署的教程,但NodeJS上没有任何内容.目前我的.gitlab-ci.yml文件看起来像这样:

image: node:latest

job1:
  script: "ls -l"

test:
  script: "npm install;npm test"

production:
  type: deploy
  script:
  - npm install
  - npm start
  - gem install dpl
  - dpl --provider=heroku --app=my-first-nodejs --api-key=XXXXXXXXXX
  only:
  - master
Run Code Online (Sandbox Code Playgroud)

Ruby和Python教程使用该dpl工具进行部署,但是如何在部署后在服务器上启动NodeJS脚本?

添加生产部分并推送它之后,测试运行并通过,但部署阶段卡在挂起状态.控制台是空白的.有没有人为NodeJS设置成功的CD脚本?

javascript heroku node.js continuous-deployment gitlab

13
推荐指数
2
解决办法
1万
查看次数

jasmine-node done未定义

一直在尝试一个简单的异步测试.npm install -g jasmine-node然后安装了jasmine-node 编写了一个简单的模块并进行测试.

简单的模块.

// weather.js
exports.get = function(city, callback) {
    callback(city);
};
Run Code Online (Sandbox Code Playgroud)

和测试套件.

// weather-spec.js
var list = require("../modules/weather");

describe("Weather Forecast", function(data) {
    it('should get weather for London,UK', function() {
        list.get('London,UK', function(data) {
            expect(data).toEqual('London,UK');
            done();
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Stacktrace:
    ReferenceError: done is not defined
Run Code Online (Sandbox Code Playgroud)

鉴于这个简单的例子我无法看到我错在哪里.有人可以帮忙吗?

javascript node.js jasmine-node

8
推荐指数
1
解决办法
6194
查看次数

Dart Shelf 请求无身体数据

我正在使用 Dart Shelf 构建一个简单的 API。GET 请求工作正常,但我似乎无法访问 POST 请求的请求正文。


import 'dart:io' show InternetAddress;

import 'package:shelf/shelf.dart' show Request, Response;
import 'package:shelf/shelf_io.dart' show serve;
import 'package:shelf_router/shelf_router.dart' show Router;

void main() async {

    Router router = Router();

    router.get('/', (Request request) {
        return Response.ok('this is the base URL');
    });

    router.post('/accounts', (Request request) async{
        final body = await request.readAsString();
        print(body);
        return Response.ok(body);
    });

    final server = await serve(
        router,
        InternetAddress.anyIPv4,
        8080,
    );

    print('Serving at http://${server.address.host}:${server.port}');
}
Run Code Online (Sandbox Code Playgroud)

当我发出请求时,我收到 200 OK 状态代码,但正文数据在哪里?

api post http dart

6
推荐指数
0
解决办法
1607
查看次数

如何在 Deno Oak 服务器中提供静态内容以及动态路由

我习惯使用 NodeJS 和 Koa。我一直在使用 Deno 并运行了静态文件服务器的示例:


/* static_server.js */

import { Application } from 'https://deno.land/x/oak/mod.ts'

const port  = 8080

const app = new Application()

// Error handler middleware
app.use(async (context, next) => {
  try {
    await next()
  } catch (err) {
        console.error(err)
    }
})

// Send static content
app.use(async (context) => {
    console.log(`${context.request.method} ${context.request.url.pathname}`)
  await context.send({
    root: `${Deno.cwd()}/static`,
    index: "index.html",
  })
})


await app.listen({ port })
Run Code Online (Sandbox Code Playgroud)

我还使用路由创建了一个动态服务器:


/* routes.js */

import { Application, Router } from 'https://deno.land/x/oak/mod.ts'

const port = …
Run Code Online (Sandbox Code Playgroud)

javascript webserver routes deno oak

5
推荐指数
1
解决办法
2744
查看次数

使用 Deno 将 TypeScript 编译为 JavaScript

我正在开发一些 Deno 项目,希望能够将 TypeScript 编译为 JavaScript 以在浏览器中运行(因为尚不支持 TS)。当我使用 NodeJS 时,我tsc使用 npm 安装了编译器,但仅仅为了访问tsc. Deno 有内置编译器吗?

我正在运行 Ubuntu 服务器。

javascript node.js npm typescript deno

3
推荐指数
1
解决办法
4142
查看次数

使用 Deno 和 Oak 处理多部分/表单数据

我在学习 Deno 和 Oak 方面取得了缓慢但稳定的进展,但这让我感到困惑。我有一个带有文件上传字段的简单网络表单:

<form method="post" action="/quote" enctype="multipart/form-data">
  <label>Author:
  <input type="text" name="author" />
  </label>
  <label>file: <input type="file" name="myfile" multiple />
  </label>
  <label>Quote: 
  <textarea name="quote"></textarea>
  </label>
  <input type="submit" />
  </form>
Run Code Online (Sandbox Code Playgroud)

处理是通过 Deno 和 Oak 完成的,下面是处理文本数据的脚本:

router.post('/quote', async context => {
const body = context.request.body({ type: 'form' })
  const value = await body.value
  const author = value.get('author')
  console.log(author)
  context.response.redirect(`/?author=${author}`)
})
Run Code Online (Sandbox Code Playgroud)

该路由可以处理没有编码的表单multipart/form-data,但一旦我添加该编码,该author字段就是undefined

我的问题是:如何访问此表单中的数据(文本和文件数据)?

javascript forms upload deno oak

2
推荐指数
1
解决办法
2554
查看次数

如何查看应用于小部件的样式?

有没有办法查看小部件应用了什么样式?在网站开发中, Chrome 开发工具中的“样式”选项卡显示了应用的样式以及样式如何级联,这对于调试页面非常有用。

Flutter中有类似的功能吗?

user-interface widget flutter css-cascade

2
推荐指数
1
解决办法
813
查看次数

将过滤器应用于UIImage时,结果是颠倒的

这真让我讨厌.当我将UIImage转换为CIImage时,应用滤镜然后将图像上下颠倒(对于横向)或逆时针旋转90度(对于肖像).

var image:UIImage?
var index:Int?

@IBOutlet weak var photo: UIImageView!

@IBAction func editImage(sender: UIBarButtonItem) {
    println("editImage")
    let beginImage = CIImage(image: self.image)
    let filter = CIFilter(name: "CISepiaTone")
    filter.setValue(beginImage, forKey: kCIInputImageKey)
    filter.setValue(0.8, forKey: kCIInputIntensityKey)
    let newImage = UIImage(CIImage: filter.outputImage)
    self.photo.image = newImage
}
Run Code Online (Sandbox Code Playgroud)

core-image ios ciimage swift

1
推荐指数
1
解决办法
1042
查看次数

简单的NodeJS部署到Heroku

我正在尝试将一个非常简单的NodeJS应用程序部署到Heroku.

var http = require('http');
var server = http.createServer(function(req, res) {
  res.writeHead(200);
  res.end('Hello World');
}).listen(3000);
Run Code Online (Sandbox Code Playgroud)

我已在本地测试它并运行以下命令.

heroku login
heroku create marktyers
git push heroku master
heroku ps:scale web=1
Run Code Online (Sandbox Code Playgroud)

该应用似乎部署,但当我查看URL时,我得到一个应用程序错误.

https://marktyers.herokuapp.com
Run Code Online (Sandbox Code Playgroud)

这是heroku日志.

node server.js

heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=marktyers.heroku
app.com request_id=d2ccf200-f034-4b62-951a-0a1d3055bf35 fwd="90.244.82.220" dyno= connect= service= status=503 bytes=               
heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch                                                                                                                             
heroku[web.1]: Stopping process with SIGKILL                                                       
heroku[web.1]: State changed from starting to crashed …
Run Code Online (Sandbox Code Playgroud)

deployment heroku node.js

1
推荐指数
1
解决办法
903
查看次数

使用Swift解析JSON

我在自定义类中有一个异步方法,它返回一个包含字典的NSArray.我试图在UITableView中显示这些数据.一个问题是getGenres方法调用是异步的,因此在显示表之后会加载数据.主要问题是弄清楚如何实现3种数据源方法.在Objective C中,这很简单......

var genreList:NSArray?

override func viewDidLoad() {
    super.viewDidLoad()
    Bookshop.getGenres {
        genres in
            self.genreList = genres // copies data to the public NSArray
            self.tableView.reloadData() // this returns the data async so need to reload the tableview
            println("records: \(self.genreList?.count)") // displays the array of dictionaries correctly
    }
}

// #pragma mark - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
    return 1
}

override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
    if self.genreList != nil { …
Run Code Online (Sandbox Code Playgroud)

parsing json tableview ios swift

-1
推荐指数
1
解决办法
1497
查看次数