Heres - основная функция, которая будет проверять ваши файлы всего проекта за определенную строку и сообщать вам, в каком файле она находится, и какую позицию char она начинается с использования только базового php. Надеюсь, это поможет кому-то ...
<?php
$find="somefunction()";
echo findString('./ProjectFolderOrPath/',$find);
function findString($path,$find){
$return='';
ob_start();
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if(is_dir($path.'/'.$file)){
$sub=findString($path.'/'.$file,$find);
if(isset($sub)){
echo $sub.PHP_EOL;
}
}else{
$ext=substr(strtolower($file),-3);
if($ext=='php'){
$filesource=file_get_contents($path.'/'.$file);
$pos = strpos($filesource, $find);
if ($pos === false) {
continue;
} else {
echo "The string '$find' was found in the file '$path/$file and exists at position $pos<br />";
}
}else{
continue;
}
}
}
}
closedir($handle);
}
$return = ob_get_contents();
ob_end_clean();
return $return;
}
?>
В вашем первом примере говорится, что вы определили getPerson (name: String) как метод экземпляра. (Предположительно, потому что он работает со свойствами экземпляра.)
Вы называете это здесь, как если бы оно было определено как:
static func getPerson(name: String) { ...
Второй говорит примерно то же самое, не догадываясь, что вы хочу сделать.
Если я понимаю, что вы хотите сделать, я думаю, что это выглядит примерно так:
class GetPersons {
struct Person {
public var name : String = ""
public var age : Int = 0
}
func getPerson(name : String) -> Person {
var person = Person()
return person
}
}
Затем в вашем контроллере представления определите свойство для экземпляра GetPersons:
let gp = GetPersons()
затем в viewDidLoad:
let person = gp.getPerson(name: "Jack")
Кроме того, находится ли GetPersons в реальной структуре или это просто класс, определенный (как и должно быть) в отдельном файле?