From e7aa6c77a13b83842562726076b733fd94dc7bd9 Mon Sep 17 00:00:00 2001 From: Muxi Yan Date: Wed, 23 Aug 2017 17:43:57 -0700 Subject: [PATCH 1/3] Convert SwiftSample to Swift 3 style --- .../examples/SwiftSample/ViewController.swift | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/objective-c/examples/SwiftSample/ViewController.swift b/src/objective-c/examples/SwiftSample/ViewController.swift index 5931914b7b2..873d0923b74 100644 --- a/src/objective-c/examples/SwiftSample/ViewController.swift +++ b/src/objective-c/examples/SwiftSample/ViewController.swift @@ -36,7 +36,7 @@ class ViewController: UIViewController { // Example gRPC call using a generated proto client library: let service = RMTTestService(host: RemoteHost) - service.unaryCallWithRequest(request) { response, error in + service.unaryCall(with: request) { response, error in if let response = response { NSLog("1. Finished successfully with response:\n\(response)") } else { @@ -48,7 +48,7 @@ class ViewController: UIViewController { // Same but manipulating headers: var RPC : GRPCProtoCall! // Needed to convince Swift to capture by reference (__block) - RPC = service.RPCToUnaryCallWithRequest(request) { response, error in + RPC = service.rpcToUnaryCall(with: request) { response, error in if let response = response { NSLog("2. Finished successfully with response:\n\(response)") } else { @@ -59,7 +59,7 @@ class ViewController: UIViewController { } // TODO(jcanizales): Revert to using subscript syntax once XCode 8 is released. - RPC.requestHeaders.setObject("My value", forKey: "My-Header") + RPC.requestHeaders.setObject("My value", forKey: "My-Header" as NSCopying) RPC.start() @@ -70,18 +70,18 @@ class ViewController: UIViewController { let requestsWriter = GRXWriter(value: request.data()) - let call = GRPCCall(host: RemoteHost, path: method.HTTPPath, requestsWriter: requestsWriter) + let call = GRPCCall(host: RemoteHost, path: method?.httpPath, requestsWriter: requestsWriter) - call.requestHeaders.setObject("My value", forKey: "My-Header") + call?.requestHeaders.setObject("My value", forKey: "My-Header" as NSCopying) - call.startWithWriteable(GRXWriteable { response, error in - if let response = response as? NSData { + call?.start(with: GRXWriteable { response, error in + if let response = response as? Data { NSLog("3. Received response:\n\(try! RMTSimpleResponse(data: response))") } else { NSLog("3. Finished with error: \(error!)") } - NSLog("3. Response headers: \(call.responseHeaders)") - NSLog("3. Response trailers: \(call.responseTrailers)") + NSLog("3. Response headers: \(call?.responseHeaders)") + NSLog("3. Response trailers: \(call?.responseTrailers)") }) } } From 731d3e17dafb234bf52070db68339791e2a37c35 Mon Sep 17 00:00:00 2001 From: Muxi Yan Date: Thu, 1 Feb 2018 14:00:27 -0800 Subject: [PATCH 2/3] Update Swift version in xcodeproj --- .../SwiftSample.xcodeproj/project.pbxproj | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/objective-c/examples/SwiftSample/SwiftSample.xcodeproj/project.pbxproj b/src/objective-c/examples/SwiftSample/SwiftSample.xcodeproj/project.pbxproj index 6247d0b4e6f..0113d9c5d6a 100644 --- a/src/objective-c/examples/SwiftSample/SwiftSample.xcodeproj/project.pbxproj +++ b/src/objective-c/examples/SwiftSample/SwiftSample.xcodeproj/project.pbxproj @@ -168,13 +168,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-SwiftSample-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; A1738A987353B0BF2C64F0F7 /* [CP] Embed Pods Frameworks */ = { @@ -183,9 +186,26 @@ files = ( ); inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-SwiftSample/Pods-SwiftSample-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/BoringSSL/openssl.framework", + "${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework", + "${BUILT_PRODUCTS_DIR}/RemoteTest/RemoteTest.framework", + "${BUILT_PRODUCTS_DIR}/gRPC/GRPCClient.framework", + "${BUILT_PRODUCTS_DIR}/gRPC-Core/grpc.framework", + "${BUILT_PRODUCTS_DIR}/gRPC-ProtoRPC/ProtoRPC.framework", + "${BUILT_PRODUCTS_DIR}/gRPC-RxLibrary/RxLibrary.framework", + "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/openssl.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RemoteTest.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GRPCClient.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/grpc.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ProtoRPC.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxLibrary.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -329,7 +349,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = ""; - SWIFT_VERSION = 2.3; + SWIFT_VERSION = 4.0; USER_HEADER_SEARCH_PATHS = ""; }; name = Debug; @@ -344,7 +364,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = ""; - SWIFT_VERSION = 2.3; + SWIFT_VERSION = 4.0; USER_HEADER_SEARCH_PATHS = ""; }; name = Release; From 68b906882c135d926c8aff695784c279745f8c25 Mon Sep 17 00:00:00 2001 From: Muxi Yan Date: Wed, 18 Apr 2018 15:36:26 -0700 Subject: [PATCH 3/3] Address comments --- .../examples/SwiftSample/ViewController.swift | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/objective-c/examples/SwiftSample/ViewController.swift b/src/objective-c/examples/SwiftSample/ViewController.swift index 873d0923b74..0ba6e21f02a 100644 --- a/src/objective-c/examples/SwiftSample/ViewController.swift +++ b/src/objective-c/examples/SwiftSample/ViewController.swift @@ -59,29 +59,29 @@ class ViewController: UIViewController { } // TODO(jcanizales): Revert to using subscript syntax once XCode 8 is released. - RPC.requestHeaders.setObject("My value", forKey: "My-Header" as NSCopying) + RPC.requestHeaders["My-Header"] = "My value" RPC.start() // Same example call using the generic gRPC client library: - let method = GRPCProtoMethod(package: "grpc.testing", service: "TestService", method: "UnaryCall") + let method = GRPCProtoMethod(package: "grpc.testing", service: "TestService", method: "UnaryCall")! let requestsWriter = GRXWriter(value: request.data()) - let call = GRPCCall(host: RemoteHost, path: method?.httpPath, requestsWriter: requestsWriter) + let call = GRPCCall(host: RemoteHost, path: method.httpPath, requestsWriter: requestsWriter)! - call?.requestHeaders.setObject("My value", forKey: "My-Header" as NSCopying) + call.requestHeaders["My-Header"] = "My value" - call?.start(with: GRXWriteable { response, error in + call.start(with: GRXWriteable { response, error in if let response = response as? Data { NSLog("3. Received response:\n\(try! RMTSimpleResponse(data: response))") } else { NSLog("3. Finished with error: \(error!)") } - NSLog("3. Response headers: \(call?.responseHeaders)") - NSLog("3. Response trailers: \(call?.responseTrailers)") + NSLog("3. Response headers: \(call.responseHeaders)") + NSLog("3. Response trailers: \(call.responseTrailers)") }) } }