好的,所以我有一个专为角色扮演而设计的应用。我有一个指南,引导用户创建角色。所以用户要做的第一件事就是输入字符编号。所以我希望它搜索我所谓的characternumber
属性的所有记录,看看最大的数字是多少。
示例:假设我有5个字符。字符编号1,2,3,4,5。我想循环遍历所有记录,并看到5是最大数字,而不是自动在字符编号文本字段中放置6。
这是我到目前为止所做的:
@IBOutlet var societyNumberTxt: UITextField!
@IBOutlet var characterNumberTxt: UITextField!
let managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
var characters: [NSManagedObject] = []
var societyNum: [NSManagedObject] = []
var charNum: [String] = []
override func viewDidLoad()
{
super.viewDidLoad()
//1
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
//2
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Characters")
//3
do {
societyNum = try managedContext.fetch(fetchRequest)
let entityDescription = NSEntityDescription.entity(forEntityName: "Characters", in: managedObjectContext)
let request: NSFetchRequest<Characters> = Characters.fetchRequest()
request.entity = entityDescription
var results = try managedObjectContext.fetch(request as! NSFetchRequest<NSFetchRequestResult>)
if societyNum.count > 0
{
let match = results[0] as! NSManagedObject
societyNumberTxt.text = (match.value(forKey: "societynumber") as? String)!
print(match)
if (match.value(forKey: "characternumber") != nil)
{
self.charNum = match.value(forKey: "characternumber") as! [String]
print(self.charNum)
}
else
{
print("empty array")
characterNumberTxt.text = "1"
}
}
else
{
societyNumberTxt.placeholder = "Society # not set"
}
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
}
我不确定如何遍历每条记录并检查属性并放置在数组中。我尝试过这样的事情:
var i = 0
for i in results
{
var match = results[i] as? NSManagedObject
charNum[i] = match
}
我收到错误:
不能使用“Any”
现在测试我的if语句代码:
if (match.value(forKey: "characternumber") != nil)
{
self.charNum = match.value(forKey: "characternumber") as! [String]
print(self.charNum)
}
它返回并且错误:
无法将'NSTaggedPointerString'(0x108578d10)类型的值转换为'NSArray'(0x108578dd8)。
我是否在正确的过去?
答案 0 :(得分:2)
使用unicode
调整您的获取请求,而不是手动找到最高SortDescriptor
:
characterNumber