2012-12-19 19 views

cevap

7

Bu, çok zayıf bir şekilde belgelenmiş gibi görünen "keyfi yöntem çağırmalarına sahip işlev ifadeleridir". min, sum, count:

Fonksiyon OS X 10.4 üzerinde

, NSExpression sadece işlevlerinin bir önceden tanımlanmış bir set destekler ifadeler: Bildiğim kadarıyla tek referans NSExpression Class Reference bir paragraf max ve average. Bu önceden tanımlanmış işlevlerine, özel anahtar sözcüklerini kullanarak (örneğin, MAX(1, 5, 10)) varsayılan sözdiziminde erişilmiştir.

OS X v10.5 ve sonraki sürümlerinde, işlev ifadeleri de keyfi yöntem çağırmalarını destekler. Bu genişletilmiş işlevsellik kullanmak için, şimdi örneğin sözdizimi FUNCTION(receiver, selectorName, arguments, ...), kullanabilirsiniz: o örnek kodda alıntı

FUNCTION(@"/Developer/Tools/otest", @"lastPathComponent") => @"otest"

yanlış görünüyor. Ancak aşağıdaki kod derler ve iOS 5/6 üzerinde çalışan: sizin durumunuzda Yani

NSExpression *expr = [NSExpression expressionWithFormat:@"FUNCTION('/Developer/Tools/otest', 'lastPathComponent')"]; 
id result = [expr expressionValueWithObject:nil context:nil]; 
NSLog(@"result: %@", result); 
// Output: 
// otest 

, bu $manager ve $source ile değiştirilmiştir

[$manager destinationInstancesForEntityMappingNamed:@"employeesToEmployees" 
            sourceInstances:$source.employees] 

değerlendirildiğinde, çağıran bir işlev ifadesidir "Temel Veri Modeli Sürüm Oluşturma ve Veri Taşıma Programlama Kılavuzu" nda Mapping Model Objects'da açıklandığı gibi geçiş yöneticisi ve kaynak nesnesi.