我有一个包含一些核心数据对象的数组。每个对象都有三个属性,例如“import com.sun.deploy.net.URLEncoder;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
public class Main {
public static void main(String[] args) {
String address = "Санкт-Петербург";
try {
URLEncoder.encode(address, "UTF-8");
} catch (Exception e) {
System.out.print("BAD");
}
System.out.println(address);
HttpClient client = new HttpClient();
String request = "https://geocode-maps.yandex.ru/1.x/?geocode=" + address;
GetMethod method = new GetMethod(request);
String Lat="",Long="";
try {
client.executeMethod(method);
String s = method.getResponseBodyAsString();
System.out.print(s);
} catch (Exception e) {}
}
}
”& “First Name
”
我想过滤&根据搜索字母对数组进行排序。最终列表应按此顺序排列:
我在创建谓词和排序描述符时感到困惑。有人可以帮忙吗?
修改
这是我的抓取结果控制器:
Last Name
但这似乎不起作用,意味着它不对对象进行排序。
答案 0 :(得分:1)
但这似乎不起作用,意味着它不对对象进行排序。
你真的是说它没有排序,或者它没有按照你想要的方式排序吗?
NSSortDescriptor
只需要一个键进行排序。在您具有主键和辅助键的情况下,只有在主键相等时才使用辅助键进行排序,例如,系列名称然后给出名称,然后存在诸如setSortDescriptors:
之类的例程,其中包含一系列排序描述符。这是您在代码中设置的那种排序。
但是,这不是您在项目符号中指定的那种。您的排序需要访问多个密钥来确定顺序 - 它说第一个密钥符合特定条件然后对该密钥排序,否则如果第二个密钥满足特定条件,则对该密钥进行排序,等等。执行此类排序你可以写一个NSComparator
块,它可以访问完整的对象 - 而不仅仅是特定键的值 - 并将你的算法作为测试和比较的组合来实现。
不幸的是,NSFetchRequest
不直接支持第二种排序。相反,您需要在不进行排序的情况下获取结果,然后使用sortedArrayUsingComparator:
等方法对结果数组进行排序。
有关相关问题,请参阅NSSortDescriptor: Custom comparison on multiple keys simultaneously。
HTH