小编pra*_*ash的帖子

知道Swift中的变量类型

如何在Swift中识别变量的类型.例如,如果我写

struct RandomStruct....- 类型应该给我struct而不是RandomStruct

或者如果我写class RandomClass...的类型应该是class和不RandomClass.

我尝试过使用,Mirror.subjectType并且type(of:)两者都提供输出RandomStructRandomClass

swift

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

无法调用非函数类型的值:UITableView

我有一个延伸的SwiftUITableViewController.它有这个功能

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {...}
Run Code Online (Sandbox Code Playgroud)

有必要,我需要在一个地方以编程方式调用此函数

self.tableView(tableView, cellForRowAt: 1)
Run Code Online (Sandbox Code Playgroud)
  • 我明白了,不能调用非函数类型'UITableView!'的值

如何以编程方式调用此函数?

uitableview ios swift

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

在Swift中使用Objective-C协议

我有一个在Objective-C中定义的协议,如下所示

@protocol TestProtocol

@required
- (void) printInputString:(NSString*) s

@end
Run Code Online (Sandbox Code Playgroud)

该协议通过pod发送到Swift项目,模块名称为 someModule

我想在Swift项目中使用这个协议

  1. 纯Swift类,即不从NSObject继承
  2. 从NSObject继承的Swift类(例如通过UIViewController)

例1.

class TestPureSwiftClass: TestProtocol
Run Code Online (Sandbox Code Playgroud)

例2.

class ArgumentModificationSwift: UIViewController, TestProtocol
Run Code Online (Sandbox Code Playgroud)

当我只实现Example 1一切工作正常时,但只要我这样做Example 2- 它给了我错误Module someModule not found

如何解决这个问题?

objective-c ios swift

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

在 Xcode 中查找链接到项目的框架

我看到了这个问题:如何以编程方式获取 ios 项目中包含的框架和库的列表?在这里,它试图回答类似的问题。但是,我对此有两个问题

  1. 上面链接中的答案(或参见下面的代码) - 它提供了所有框架还是“仅”链接到项目的框架。

    for (NSBundle *framework in [NSBundle allFrameworks]) 
        NSLog(@"%@",framework.bundlePath.lastPathComponent);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果我在上面的代码中看到一个框架,我如何在我的代码中找到它的用法。我看到上面的代码中引用了许多框架,但我无法弄清楚它们到底在哪里使用。据我所知,其中很少有人不使用 - 是否有适当的方法来找出这一点。

更新 1: 我制作了一个简单的新应用程序,里面绝对没有代码。然后,我执行了for上面的循环并发现,它还向我展示了所有框架——这意味着,上面的代码只是打印了所有框架,而不是我在我的应用程序中基本上使用的框架。但是,这是否意味着所有打印的框架都链接到应用程序?

xcode objective-c ios swift

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

强引用 dispatch_queue 的保留周期

在课堂上,我声明了一个线程,如:

@property (nonatomic, strong) dispatch_queue_t databaseQueue;

然后我执行这个线程的操作

dispatch_async(self.databaseQueue, ^{
        [self.dao deleteRetries];
    });
Run Code Online (Sandbox Code Playgroud)

这可能会创建一个保留周期吗?

当前类拥有对的强引用,viewControllerToDismiss并且有一段代码如下:

[viewControllerToDismiss dismissViewControllerAnimated:shouldAnimateDismiss completion:^{

   [self performSomeAction];
}
Run Code Online (Sandbox Code Playgroud)

这是一个保留周期吗?

objective-c grand-central-dispatch ios

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

用于Swift类的NSClassForString,目标名称中包含空格

根据这里的文档:使用Swift使用Cocoa和Objective-C, 我们需要具有完全限定的名称来获取类NSClassFromString()

例如,如果目标名称是ABC并且类名是XYZ,我们通过调用`NSClassFromString(ABC.XYZ)来获取类

但是,当目标名称中有空格时,即当目标名称类似时,我无法获得结果dummy target.我们如何在这种情况下上课?

目标名称有空格有效,如下图所示 在此输入图像描述

xcode runtime objective-c ios swift

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

使用 shell 脚本在 XCode 项目中查找包标识符

Xcode 项目的 Info.plist 中的 Bundle 标识符可以有多种形式,例如

  1. com.company.$(PRODUCT_NAME:rfc1034identifier)
  2. $(PRODUCT_BUNDLE_IDENTIFIER)
  3. 有人可以设计自己的产品包标识符用于调试、发布等类型的构建,并根据包标识符编写一个变量,例如 com.company.$(PRODUCT_NAME:rfc1034identifier).$(someRandomVariable)

我想编写一个只正确读取包标识符的 shell 脚本。

但是,如果您只知道 shell 脚本 - 我知道如何找出 $() 中变量的值,但是想要一个 shell 脚本,该脚本应该为我提供字符串中的所有此类变量,然后我将有代码来计算它们的值,我将创建字符串,并将变量替换为值。

function getBundleIdentifier
{
    cfBundleIdentifier=${PRODUCT_BUNDLE_IDENTIFIER}
    if [ ${#cfBundleIdentifier} -lt 1 ]; then

        SOURCE="rfc1034identifier"
        cfBundleIdentifier=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${PROJECT_DIR}/${INFOPLIST_FILE}")

        if echo "$cfBundleIdentifier" | grep -q "$SOURCE"; then
            echo `eval echo $cfBundleIdentifier``eval echo ${PRODUCT_NAME:rfc1034identifier}`
        else
            echo `eval echo $cfBundleIdentifier`
        fi

    else
        echo $cfBundleIdentifier
   fi
}
Run Code Online (Sandbox Code Playgroud)

这是我写的,但它并没有涵盖所有情况。

shell xcode ios

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

如何运行命令

我想在Swift使用中运行命令Process.这是我目前的代码:

process.launchPath = "/bin/sh"
process.arguments = ["symbolicatecrash", "crash.crash"]
Run Code Online (Sandbox Code Playgroud)

但是,这会执行命令sh symbolicatecrash crash.crash.我希望这个命令被执行为./symbolicatecrash crash.crash.我怎样才能在Swift中实现同样的目标.

我尝试了以下代码(这是运行时崩溃)

process.launchPath = ""
process.arguments = ["symbolicatecrash", "crash.crash"]
Run Code Online (Sandbox Code Playgroud)

ios swift

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

CoreML模型未定义符号错误

我创建了一个 coreML 模型,当我尝试在 Objective-C 项目中使用该模型时,出现以下错误:

Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_MLFeatureValue", referenced from: objc-class-ref in logistic_model_8000.o "_OBJC_CLASS_$_MLModel", referenced from: objc-class-ref in logistic_model_8000.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

PS:我不确定可以添加到问题中的其他细节可能有助于回答它。如果您需要更多详细信息,请在评论中提出。

xcode objective-c ios coreml

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

在我的最终输出中舍入小数位

我的代码是:

import java.util.Scanner;

public class AreaHexagon {
public static void main(String[] args) {
       Scanner s = new Scanner(System.in);
       double side, area;

       System.out.print("Enter the side:");
       side = s.nextDouble();

       area = ((3 * Math.pow(3, 0.5) / 2)) * Math.pow(side, 2);

       System.out.print("The area of the hexagon is " + area);
    }
Run Code Online (Sandbox Code Playgroud)

}

我得到的错误信息是:对于6.6是侧面的长度,答案应该是113.17,但我得到113.17219976,依此类推.我尝试添加double roundOff = Math.round(side*100)/ 100; 但我不能让它正常运作.

java

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